2020-05-24 04:03:00
939

В одном из проектов совместно с созданием собственного скрипта регистрации пользователя, потребовалось организовать и вход в профиль через форму, проект нужно было выполнить быстро, а все формы и ajax скрипты были полностью готовы, осталось только оправить данные в  файл и отправить пользователя в его профиль. 

Скрипт выхода в профиль очень прост, больше всего времени ушло на приведение к нужному виду пароля отправленному из формы, чтобы сравнить его с паролем в базе, получилось достаточно просто. 

Объяснять тут особо нечего, получаем email пользователя, фильтруем пользователя по email, получаем его пароль из базы $arUser['PASSWORD'] и сравниваем с паролем из формы, далее происходит авторизация пользователя $USER->Authorize($id_user).

if($TYPE = 'AUTH' & $EMAIL &&  $PASSWORD){

$filter = Array("EMAIL" => $EMAIL);
$sql = CUser::GetList(($by="ID"), ($order="DESC"), $filter);
if($sql->NavNext(true, "f_"))
{
$id_user = $f_ID;

$rsUser = CUser::GetByID($id_user);
$arUser = $rsUser->Fetch();

$pass = $PASSWORD;
$salt = substr($arUser['PASSWORD'], 0, strlen($arUser['PASSWORD']) - 32);
$db_password = substr($arUser['PASSWORD'], -32); // тут переделывает в пароль с бд b_user
$user_password =  md5($salt.$pass); // переделывает в нужный вид введенный пароль
if ($db_password==$user_password)
{
    if($USER->Authorize($id_user))echo 'Y';
    else echo 'N';
}else echo 'N';
}else echo 'N';

}

Комментарии (46)