在你的注册脚本中,你使用PHP的password_hash()函数来加密用户密码并将其存储在数据库中。当用户尝试登录时,您将使用password_verify() 将输入的密码与数据库中的哈希版本进行比较。但是,密码不匹配,表明您的 password_verify() 调用存在问题。
password_verify() 采用两个参数:
它将纯文本密码与散列版本进行比较,如果匹配则返回 true,如果不匹配则返回 false。
在您的登录脚本中,您将纯文本密码 ($pwd) 和散列密码 ($password) 传递给password_verify():
if(($user_id == $p_num) && (password_verify($pwd, $password))){
但是,您还使用 var_dump() 在比较,这可以改变它们的值。 var_dump() 输出显示纯文本密码 ($pwd) 被修改为“1”,而散列密码 ($password) 保持与数据库中存储的相同。
要解决此问题,请从代码中删除 var_dump() 调用,并确保 $pwd 包含用户在登录期间输入的纯文本密码。您的登录代码应如下所示:
if(($user_id == $p_num) && (password_verify($pwd, $password))){
以上是为什么Password_Verify()函数不验证哈希密码?的详细内容。更多信息请关注PHP中文网其他相关文章!