相同的Phpass代码使用CheckPassword返回不同的结果



我使用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.

我很困惑,在我看来,没有任何可以想象的原因可以解释为什么这不起作用

原来我是一个大傻瓜,忘记执行数据库查询以更改密码

最新更新