Вытащить хеш пароля из базы для проверки - MySQL
Формулировка задачи:
Есть таблица 'users': id, email, password.
Есть логин форма email, password.
Почему $result всегда пустой, хотя я ввожу в инпут существующий в базе email?
И я не могу понять как работает hash_equals.
$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'])){ //... }
Решение задачи: «Вытащить хеш пароля из базы для проверки»
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']) ){ // хеши совпали }
Объяснение кода листинга программы
- Создается объект PDO с указанием подключения к базе данных.
- Создается объектStatement, который будет заниматься подготовкой и выполнением запроса.
- Запрос SELECT вытаскивает значение хеш-пароля из базы данных.
- Устанавливается параметр :email, который соответствует переданному значению в POST-запросе.
- Выполняется запрос.
- Результат запроса сохраняется в переменную $result.
- Проверяется совпадение хеш-пароля из базы данных и хеш-пароля из POST-запроса.
- Если хеши совпали, то выполняется блок кода, иначе выполняется другой блок кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д