1
嗨,我想在PHP中使用password_hash()来散列我的密码。这部分是好的,但比较哈希无论如何都返回false。要登录我检查用户帐户数据库并获取密码哈希,然后把它比作在键入的密码,我的代码如下所示:PHP password_verify总是返回false
$password = $_SERVER["PHP_AUTH_PW"];
$hash = $row["password"];
if (password_verify($password, $hash)) {
// CREATE SESSION VARIABLES //
}
else{
header("HTTP/1.1 404 Not Found");
}
正如你可以看到,在中带过来输入的密码HTTP标头。我不认为这会混淆密码字符串,因为我可以直接将其与数据库中的密码进行比较(不使用散列)。有任何想法吗?我有三倍检查我的PHP版本,我可以散列密码,所以不是这样。
你是否检查过你给'password_verify'的参数是你期望它们的? – Flosculus
以及数据库中的密码已经用password_hash()函数进行散列处理。然后通过输入的用户名和输入的公司ID识别并获取。然后将输入的密码与使用password_verify()函数的散列密码进行比较。但它总是返回错误 – Aaron
不,我是说你手动检查并确保'$ password'和'$ hash'的值是检索的正确值,无论它们是否验证。 – Flosculus