我正在使用用户登录系统创建一个网站。对于身份验证,我使用php password_hash()和password_verfiy()。
在密码恢复的代码中,我发现了一个错误。我正在创建一个随机密码,并使用password_hash()将其保存到数据库中。我还向用户发送一封电子邮件,其中包含未加密的新密码。但是身份验证不起作用。
在脚本末尾,我还打印了密码,并且数据库中打印的哈希密码和打印的哈希密码和哈希密码不同。
$zeichen = '0123456789abcdefghijklmnopqrstuvwxyz';
$newPassword = '';
$anz = strlen($zeichen);
for ($i=0; $i<16; $i++) {
$newPassword .= $zeichen[rand(0,$anz-1)];
}
... (some other code) ...
$sql = "UPDATE user SET password = :password WHERE email = :email";
$para = array(
'password' => password_hash($newPassword, PASSWORD_DEFAULT),
'email' => $email
);
DATABASE->SEND_FUNCTION(); //not a real function
... (some other code) ...
echo $newPassword;
echo password_hash($newPassword, PASSWORD_DEFAULT);
如您所见,我首先创建一个新密码,然后将其保存到数据库中。最后,我回显了两种形式的密码。 echo $newPassword
在“新密码电子邮件”中给了我相同的字符串。但是echo password_hash($newPassword, PASSWORD_DEFAULT);
向我显示的字符串与我在数据库中看到的字符串不同。
谢谢大家的帮助。我很失落。