1

您好,我正在尝试在 PHP 中使用 password_hash() 对我的密码进行哈希处理。这部分很好,但无论如何比较哈希都会返回 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 版本,我可以散列密码,所以不是这样。

4

1 回答 1

2

所以 password_verify() 函数没有错。在 password_hash() 函数中添加了一点字符串。我从官方文档中复制并粘贴了这个函数:

echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";

最后的 ."\n" 位在验证功能中没有被考虑。由于应对和粘贴,这只是在这里,所以一旦我删除它,它就很好。希望这对将来的其他人有所帮助。

于 2013-08-07T11:01:22.810 回答