За последние 24 часа нас посетили 17586 программистов и 1314 роботов. Сейчас ищут 1696 программистов ...

Проверка пароля

Тема в разделе "PHP для новичков", создана пользователем sciron, 26 окт 2018.

  1. sciron

    sciron Активный пользователь

    С нами с:
    19 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    Ребята помогите новичку проходит проверку только имя пользователя пароль пишет всегда неверный! В чем проблема? При чем если пароль оставить пустым все отрабатывает.

    Код (Text):
    1. //Подключаемся к базе данных
    2. $servername = "localhost";
    3. $database = "sciron_123321";
    4. $username = "sciron_123321";
    5. $password = "123321";
    6. //Записываем все в переменные
    7.   $login=$_POST['login'];
    8. //Достаем из таблицы инфу о пользователе по логину
    9.   $link = mysqli_connect($servername, $username, $password, $database);
    10.   $res=mysqli_query( $link, "SELECT * FROM `users` WHERE `login`='$login' ");
    11.   $data=mysqli_fetch_array($res);
    12. //Если такого нет, то пишем что нет
    13.  
    14.    if(empty($data['login']))
    15.   {
    16.     die("Такого пользователя не существует!");
    17.   }
    18.   $password=$_POST['password'];
    19.   $link = mysqli_connect($servername, $username, $password, $database);
    20.   $res=mysqli_query($link, "SELECT * FROM `users` WHERE `password`='$password' ");
    21.   $data=mysqli_fetch_array($res);
    22. //Если пароли не совпадают
    23.   if($password!=$data['password'])
    24.   {
    25.     die("Введенный пароль неверен!");
    26.   }
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Запрос к бд тут должен быть один. И уж тем более соединение с бд должно быть всегда один раз на скрипт. Читайте про password_hash и password_verify. После этого попробуйте переписать код.
     
    sciron нравится это.
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    А если есть 2 одинаковых пароля? и пароль не хешируется когда записывается в базу? Если хешируется тогда надо так и запрашивать
    PHP:
    1. hash($password, 'тот же ключ что и при записи в базу');
     
    sciron нравится это.
  4. sciron

    sciron Активный пользователь

    С нами с:
    19 окт 2013
    Сообщения:
    4
    Симпатии:
    0
    спасибо большое разобрался
     
  5. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    Кстати, по поводу хеширования, я год назад писал вот так вот:
    PHP:
    1. sha1($password.HASH_KEY);
    Тут написано что не рекомендуется:
    https://php.ru/manual/faq.passwords.html#faq.passwords.fasthash

    Но как то не понятно почему, может кто в курсе?
     
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    sha1 md5 и т.д всегда возвращают один результат. Можно заранее создать табличку соответствий. И если базу уведут все пароли всплывут. В этом нет никакого смысла. password_hash дополнительно генерирует соль. хэш от одного и того же пароля всегда разный.
     
  7. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @nospiou
    Все понял, спасибо. А то написали в статье про какую то скорость, фиг разберешься.