Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Авторизация Логин/Email как реализовать?

Авторизация Логин/Email как реализовать?


     31.01.2017    Общие вопросы, Общие вопросы по PHP, MySQL    2499

вопрос
Привет всем, хочу сделать авторизацию через email/логин на выбор в настройках.
То бишь - если я выберу Логин - то авторизироваться можно будет только через логин и пароль. если email То соответственно только email и пароль!
Как реализовать? Подскажите код) Спасибо

15 комментариев

fanaticus
Юзер

fanaticus - 31 января 2017 20:22 -

В настройках скрипта это есть ( если я вас правильно понял )

Kela
Юзер

Kela - 31 января 2017 20:24 -

Почти - Это для всех пользователей,. А мне надо что бы каждый пользователь мог выберать в настройках сам для своего профиля тип входа

vitnet
PHP-developer

vitnet - 1 февраля 2017 11:52 -

А мне надо что бы каждый пользователь мог выберать в настройках сам для своего профиля тип входа

Интересно, по какому же принципу скрипт определит кто хочет авторизоваться на сайте, Вася или Петя?

Ниже вам привели хороший пример реализации, пробуйте.

Kela
Юзер

Kela - 1 февраля 2017 12:13 -

В dle_users колонка method там стоит 1-Логин, 2-email.

liser
Гости

liser - 1 февраля 2017 08:05 -

Готов 500-600 заплатит ? За 2-3ч все будет

nowheremany
Эксперт

nowheremany - 1 февраля 2017 09:44 -

Цитата: liser
Готов 500-600 заплатит ? За 2-3ч все будет


Ниже выложил решение. Так что жду 500-600 р. Даже меньше чем за 2 часа справился... (правда кодил мин 5)


Благодарность принимаю тут Связь

Kela
Юзер

Kela - 1 февраля 2017 14:19 -

Сделал все за 10минут.
Осталось ошибки вывести

nowheremany
Эксперт

nowheremany - 1 февраля 2017 09:41 -

Файл
engine/modules/sitelogin.php

найти
if ($config['auth_metod']) {


выше вставить

$config['auth_metod'] = (preg_match('/.+@.+\..+/i',$_POST['login_name'])===1);


Теперь скрипт сам узнает что включить - логин или мыло. Правда могут быть проблемы если в логине собака зарыта )

Благодарность принимаю тут Связь

Kela
Юзер

Kela - 1 февраля 2017 12:09 -

Спасибо.
Но хотелось бы добавить настройку в профиль. Например колонка login 1-По нику, 2 по email.
При авторизации проверять что стоит в бд Логин или email и дальше пропускать по нужной авторизации!

Kela
Юзер

Kela - 1 февраля 2017 12:22 -

$_POST['login_name'] = $db->safesql($_POST['login_name']);

$where = filter_var($_POST['login_name'], FILTER_VALIDATE_EMAIL) ? "email" : "name";
$where.= "='{$_POST['login_name']}'";

$method = $db->super_query( "SELECT method FROM " . USERPREFIX . "_users WHERE {$where}" );

if( $method['method'] ) {
	if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\/|\\\|\&\~\*\+]/", $_POST['login_name']) ) $allow_user = false;
	$where_name = "email='{$_POST['login_name']}'";
} else {
	if( preg_match( "/[\||\'|\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $_POST['login_name']) ) $allow_user = false;
	$where_name = "name='{$_POST['login_name']}'";
}

nowheremany
Эксперт

nowheremany - 1 февраля 2017 14:41 -

Какой в этом смысл? да и дыру открыли огромную.

Мы не знаем кто к нам авторизуется, по этому делать настройки у пользователя смысла нет.

Благодарность принимаю тут Связь

Kela
Юзер

Kela - 1 февраля 2017 14:52 -

где дыра то?

OuteerMan
Юзер

OuteerMan - 4 марта 2019 17:56 -

- Стёрто -

Kela
Юзер

Kela - 1 февраля 2017 12:26 -

Как добавить ошибку Авторизация только через логин - если логин включен. если на оборот то email

iFresh
Юзер

iFresh - 5 октября 2023 01:22 -

А есть варианты как на 14 версии сделать?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх