Что не так в сравнении?

Здравствуйте! Что не так в сравнении переменных?
//получаем логин из формы
$login= $_POST['login'];
//получаем уже захэшированный пароль из формы
$pass = $_POST['pass'];
if ($pass) $pass=md5($pass);
if (isset ($login,$pass)) {
//делаем запрос к базе данных, ищём пользователя с указанным логином и паролем
$check = mysqli_query ($link, "SELECT login FROM *** WHERE login = '$login' AND  pass = '$pass'");
//формируем массив
$checkarr = mysqli_fetch_array ($check);
$userlogin = $checkarr['login'];
echo "<br>Логин из БД: $userlogin";
echo "<br> Введённый логин: $login";
if ($userlogin==$login)  {
$login = $_SESSION['login'];
    //переадресовываем его на "секретную" страницу
    header('Location: http://xxx');
}
else {
    //пользователь не авторизован
    echo "<br>Ошибка авторизации. Введите верные логин и пароль.";
    
}
}

И этот код выводит следующее:
Логин из БД: admin
Введённый логин: admin
Ошибка авторизации. Введите верные логин и пароль.
Но ведь $login = $userlogin ! Что не так?
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Gesparo
Fullstack разработчик
Может быть проблема в разных кодировках? Возможно в форму приходит windows-1251, а на сервере всё в uft-8
Попробуйте сравнивать через strcmp
php.net/manual/ru/function.strcmp.php

Если это не поможет попробуйте перекодировать в uft-8 $login
php.net/manual/ru/function.iconv.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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