我正在使用 Phpass 对我的用户的密码进行哈希处理。密码的创建和散列 - 很好。登录时检查密码 - 很好。
但是,在将旧密码更改为新密码时检查旧密码 - 总是返回错误!
它基本上是相同的代码,但它永远不会返回 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.
我很茫然,据我所知,没有任何可以想象的理由为什么这不起作用。