hash — PHP hash_password функция

По сути, я только начал работать с PHP и пытаюсь разобраться с функцией password_hash. Когда пользователь регистрируется, я хэширую его пароль, используя:

$hashed_password = password_hash($p, PASSWORD_DEFAULT);

Затем этот хешированный пароль сохраняется в моей базе данных. Затем я хочу восстановить пароль для входа в систему. Итак, мой код написан так, что после отправки формы строки электронной почты и пароля очищаются, проверяются, не являются ли они пустыми, после этого я беру введенный пользователем пароль и хеширую его, используя:

$hash = password_hash($password, PASSWORD_DEFAULT);

Снова. После этого я подключаюсь к своей БД и пытаюсь выбрать пользователя, используя:

 $q = "SELECT * FROM users
WHERE email='$email' AND password='$hash'";

Тем не мение. При отладке я заметил, что пользователь ввел строку, несмотря на то, что она совпадает со строкой, введенной при регистрации, отличается при хешировании. так что я повторяю $ hash и получаю:

$2y$10$LQ55Q1DUqIgRx/2hgnbrnuQrYvrrBrq4WEFmV8TuxII6rDocaWzt2

но точно такая же строка «пароль» хранится в БД как:

$2y$10$omNPA7cviUm.6asuhJIJ8Or.m9WeHhJMkCqYYijel5g.NflbdVnV.

Как получить, чтобы, когда пользователь вводит свой пароль, он хэширует строку и совпадает с паролем в БД, чтобы он мог войти в систему? Я что-то пропустил

ура

1

Решение

Вам нужно что-то вроде этого:

$hashed_password = mysql_result(mysql_query("SELECT password FROM users WHERE email='$email'"));

$match = password_verify( $password, $hashed_password );
if($match){
echo 'Password is valid';
} else {
echo 'Password is not valid' ;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]