为什么Password_Verify()函数不验证哈希密码?

Patricia Arquette
发布: 2024-10-21 07:07:30
原创
1000 人浏览过

Why is the Password_Verify() Function Not Verifying Hashed Passwords?

PHP的password_hash()、password_verify()

在你的注册脚本中,你使用PHP的password_hash()函数来加密用户密码并将其存储在数据库中。当用户尝试登录时,您将使用password_verify() 将输入的密码与数据库中的哈希版本进行比较。但是,密码不匹配,表明您的 password_verify() 调用存在问题。

password_verify() 用法

password_verify() 采用两个参数:

  • $password:用户登录时输入的明文密码。
  • $hash:存储在数据库中的哈希密码。

它将纯文本密码与散列版本进行比较,如果匹配则返回 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中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板