我正在使用Phpass来哈希用户的密码。密码的创建和散列 - 很好。登录时检查密码 - 很好。
将旧密码更改为新密码时检查旧密码 - 始终返回false!
它基本上是相同的代码,但即使密码正确,它也永远不会返回true。我试过直接通过输入密码并将其哈希值粘贴到函数中来检查密码,而不是从数据库和输入表单中调用它,但仍然返回false。
以下是有效的登录代码:
$user = $query->fetch(PDO::FETCH_ASSOC);
$t_hasher = new PasswordHash(8, FALSE);
$check = $t_hasher->CheckPassword($password, $user['password']);
if (!$check) { die("failed"); }
else { ... log them in etc.
这是更改密码检查,它不起作用:
$user = $query->fetch(PDO::FETCH_ASSOC);
$t_hasher = new PasswordHash(8, FALSE);
$check = $t_hasher->CheckPassword($oldpass, $user['password']);
if (!$check) { showMessage("Incorrect Password","Your password was not changed.","icon-lock", "warning"); }
else { ... change the password etc.
我感到很茫然,据我所知,没有任何理由可以解释为什么这不起作用。
答案 0 :(得分:1)
事实证明我是一个大笨蛋,忘了为更改密码执行数据库查询。