У меня возникли проблемы с проверкой пароля с функциями password_hash и password_verify. По какой-то причине он всегда возвращает false.PHP - password_verify всегда возвращает false
Хэш хранится в базе данных, когда пользователь предоставляет электронное письмо и пароль, если существует запись пользователя с предоставленным электронным письмом, предоставленный проход и хэш из этой пользовательской записи проверяется (возвращает false , указав правильный пароль).
код ниже для целей тестирования, потому что он не был надлежащим образом работает в реальном контексте (с данными, хранящимися в Databse)
Heres некоторые из кода.
<?php
//create random password with 15 chars
$pass = generate_random_string(15);
$hash = password_hash($pass, PASSWORD_BCRYPT);
var_dump(password_verify($pass, $hash));
//returns bool(true)
Недо эта часть все в порядке, он создает проход, хеширования и когда проверено возвращает истину. Теперь странная часть.
if (isset($_GET['pass']) &&
isset($_GET['hash'])) {
var_dump(password_verify($_GET['pass'], $_GET['hash']));
//returns bool(false)
}
?>
Если я беру предыдущие сгенерированные значения (передвигайте и хэш) и передать их имеют параметры URL и проверить их, он возвращает ложь.
Что я здесь делаю неправильно?
UPDATE
демпинга массив $ _GET показывает правильные параметры и значения.
Вы должны предоставить 'password_verify' функцию, а – Derek
вы можете также дамп $ _GET массив - я думаю, вы могли бы предположить что-то, что не так там ... –
Не означает ли «хэш» хранить и использовать позже, когда пользователь отправляет пароль? –