hash — Невозможно подтвердить пароль в переполнении стека

В этом проекте я использовал Bcrypt взломать пароль

При входе в систему пользователь обычно входит в систему без каких-либо ошибок или чего-либо еще, но при попытке изменить свой пароль, ваш текущий пароль не сопоставить с паролем в базе данных (конечно, я использую password_verify() проверить два пароля)

Вот фрагмент моего кода:

  $option = ['cost' => 12];
$password = password_hash($_currentpassword, PASSWORD_BCRYPT, $option);

$selectpasswordsql = "SELECT `password` FROM `auth` WHERE username=?";
$selectpasswordstmt = $conn->prepare($selectpasswordsql);
$selectpasswordstmt->execute(array($_SESSION['account']['username']));
$selectpasswordresults = $selectpasswordstmt->fetch(PDO::FETCH_ASSOC);

$databasepass = $selectpasswordresults['password'];
$databasepass = trim($databasepass);
if(password_verify($password,$databasepass)){
if(empty($passmsgs)){
$updatepasssql = "UPDATE `auth` SET
`password`=?
WHERE username=?
";
$updatepassstmt = $conn->prepare($updatepasssql);
$updatepassstmt->execute(array($password, $_SESSION['account']['username']));
if($updatepassstmt){
array_push($passmsgs, 'Successfully updating your password!');
} else {
array_push($passmsgs, 'There was a problem executing your command!');
}
}
} else {
array_push($passmsgs, 'Your current password is wrong!');
}

Попытка сделать это приведет к ошибке несоответствия вашего текущего пароля с паролем


редактироватьДа, я использую VARCHAR с максимальной длиной 255

Редактировать 2: Вот ссылка на сайт на полную копию моих кодов.

0

Решение

Вам не нужно хешировать $_currentpassword переменная во второй строке.

Просто передайте переменную password_verify функция и сама функция сделает работу.

3

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

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

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