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

使用CheckPassword返回不同结果的相同Phpass代码,php,hash,passwords,phpass,Php,Hash,Passwords,Phpass,我正在使用Phpass散列用户的密码。密码的创建和散列-很好。登录时检查密码-很好 但是,在将旧密码更改为新密码时检查旧密码-始终返回false 它基本上是相同的代码,但它永远不会返回true,即使密码是正确的。我尝试直接检查密码,输入密码并将其散列粘贴到函数中,而不是从数据库和输入表单调用它,但仍然返回false 以下是有效的登录代码: $user = $query->fetch(PDO::FETCH_ASSOC); $t_hasher = new PasswordHash(8, FA

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

我不知所措,据我所知,没有任何可以想象的原因说明这不起作用。

结果证明我是个十足的白痴,忘记了执行数据库查询以更改密码。

也许你更改了密码-登录代码仍然有效吗?是的,有效,但我已经解决了问题,并将回答。。。