您好我在尝试使用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版本进行了三次检查,我可以对密码进行哈希处理,这样就不行了。
答案 0 :(得分:2)
所以password_verify()函数没有错。在password_hash()函数中添加了一些字符串。我从官方文档中复制并粘贴了这个功能:
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";
最后的。“\ n”位未在验证函数中计算。这只是因为应对和粘贴,所以一旦我删除它,它很好。希望这有助于将来的其他人。