Вытащить хеш пароля из базы для проверки - MySQL

Узнай цену своей работы

Формулировка задачи:

Есть таблица 'users': id, email, password. Есть логин форма email, password.
$email = $_POST['email'];
$pwd = $_POST['pwd'];
 
$CONNECT = mysqli_connect($server, $name, $password, $db);
 
$result = mysqli_query($CONNECT,
     "SELECT `password` FROM `users` WHERE `email` = '".$email."'");
 
if (hash_equals($result['password'], crypt($pwd, $res['password'])){
    //...
}
Почему $result всегда пустой, хотя я ввожу в инпут существующий в базе email? И я не могу понять как работает hash_equals.

Решение задачи: «Вытащить хеш пароля из базы для проверки»

textual
Листинг программы
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=name_db;charset=UTF8', $name, $password);
$stmt = $pdo->prepare('SELECT `hesh_password` FROM `users` WHERE `email` = :email');
$stmt->bindParam(':email', $_POST['email']);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
 
if ($result['hesh_password'] == md5($_POST['pwd']) ){
// хеши совпали
}

Объяснение кода листинга программы

  1. Создается объект PDO с указанием подключения к базе данных.
  2. Создается объектStatement, который будет заниматься подготовкой и выполнением запроса.
  3. Запрос SELECT вытаскивает значение хеш-пароля из базы данных.
  4. Устанавливается параметр :email, который соответствует переданному значению в POST-запросе.
  5. Выполняется запрос.
  6. Результат запроса сохраняется в переменную $result.
  7. Проверяется совпадение хеш-пароля из базы данных и хеш-пароля из POST-запроса.
  8. Если хеши совпали, то выполняется блок кода, иначе выполняется другой блок кода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы