Технический сбой

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

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


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

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

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

fanaticus
Юзер

fanaticus - -

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

Kela
Юзер

Kela - -

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

vitnet
PHP-developer

vitnet - -

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

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

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

Kela
Юзер

Kela - -

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

liser
Гости

liser - -

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

nowheremany
Эксперт

nowheremany - -

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


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


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

Kela
Юзер

Kela - -

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

nowheremany
Эксперт

nowheremany - -

Файл
engine/modules/sitelogin.php

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


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

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


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

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

Kela
Юзер

Kela - -

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

Kela
Юзер

Kela - -

$_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 - -

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

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

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

Kela
Юзер

Kela - -

где дыра то?

OuteerMan
Юзер

OuteerMan - -

- Стёрто -

Kela
Юзер

Kela - -

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

iFresh
Юзер

iFresh - -

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

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

наверх