在PHP中的密码哈希问题 - password_verify()始终返回false
P粉481035232
P粉481035232 2023-07-30 14:51:07
0
1
444

我在PHP中遇到了密码哈希的问题。我在注册时使用password_hash()函数对管理员密码进行哈希处理,并将其存储在数据库中。然而,在登录时,当我尝试使用password_verify()验证密码时,它总是返回false,尽管我确定密码是正确的。

以下是我的代码摘要:


$adminPassword = "test123"; $adminPasswordHash = password_hash($adminPassword, PASSWORD_BCRYPT); // ... Store $adminPasswordHash in the database ... // During login: $adminInputPassword = "test123"; $adminPasswordHashVERIFY = "$2y$10$o4qspRTirOSdyGtwHCxt6ee2i0BNChl3mEPazxVbmb534kw3ACHCm"; if (password_verify($adminInputPassword, $adminPasswordHashVERIFY)) { echo "Password is correct!"; } else { echo "Password is incorrect!"; }

我确保$adminPassword和$adminInputPassword具有相同的值,但验证始终返回false。我还尝试使用password_hash()函数并将PASSWORD_DEFAULT作为参数,而不是PASSWORD_BCRYPT,但结果相同。

在哈希生成或验证过程中,我是否遗漏了什么?对于这个问题的任何帮助或见解将不胜感激。谢谢!


P粉481035232
P粉481035232

全部回复 (1)
P粉099000044

我找到了问题所在!问题似乎是由于在$adminPasswordHashVERIFY变量中使用双引号(")引起的。当使用双引号时,PHP会解释字符串并替换其中的变量。由于没有名为$fReIQ的变量,PHP将其视为未定义的变量,导致验证时产生错误的哈希值。

要解决这个问题,在$adminPasswordHashVERIFY变量中使用单引号(')引起哈希密码。这样可以确保哈希密码被视为普通字符串,而不是由PHP解释。

现在,如果你尝试以下代码,你将得到输出"密码正确!"。


    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!