Я продолжаю получать неправильный результат с этим и не могу понять почему.
Я сохраняю нового пользователя и его пароль следующим образом:
// get password input
$pass = $_POST[ 'password' ];
$options = [
'cost' => 12
];
$pass = password_hash($pass, PASSWORD_DEFAULT, $options);
// add to db
$sql = "insert into clients(first_name, last_name, email, password_hash) values ('$fname', '$lname', '$email', '$pass')";
для пароля123456«Я понимаю это:
$ 2y $ 12 $ DUd9LWGk2b26r2nQZ6KsfexFrHI / 36RJrq8lAo8vk6XC6VKibIPVG
Следующим шагом подтвердите пароль:
// get password input
$pass = $_POST[ 'password' ];
// get row hash from database
$sql = "select email, password_hash, active from clients where email = '$email'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows( $result ) == 0)
{
// Email not found in the database...
}
$row = mysqli_fetch_assoc($result);
// true if password is correct
if ( password_verify( $pass, $row['password_hash'] ) )
{
// logged in
}
else
{
$passInDb = $row['password_hash'];
// Login failed
$_SESSION['error'] = "Incorrect email or password. Cannot verify: $pass ,\n $passInDb" ;
// redirect to login page
header('Location: ../index.php');
}
Теперь, когда я пытаюсь войти, я получаю:
Неверный адрес электронной почты или пароль. Невозможно проверить: 123456 , $ 2y $ 12 $ DUd9LWGk2b26r2nQZ6KsfexFrHI / 36RJrq8lAo8vk6XC6VKibIPVG
Я действительно не понимаю, почему password_verify дает мне ложь …
Задача ещё не решена.
Других решений пока нет …