【发布时间】:2015-01-28 03:22:30
【问题描述】:
我有这个 PHP 代码。变量 $password 具有正确的静态密码分配(无需用户输入验证)。
$data['password'] 在使用 echo 打印出来时也会返回正确的哈希值。
但不知何故,password_verify 函数在此函数中不起作用。当我使用相同的输入手动使用它时,它工作正常。
也许 PDO 查询有问题,但我不知道是什么问题。
$this->mysql->query("SELECT * FROM user WHERE username = :username LIMIT 1");
$this->mysql->bind(':username', $username);
$data = $this->mysql->single();
if($this->mysql->rowCount() == 1)
{
echo $data['password'];
if(password_verify($password, $data['password']))
{
echo "yees!";
}else{
$this->user_error = true;
}
}else{
$this->user_error = true;
}
【问题讨论】:
-
如果您的数据库中的密码列是什么数据类型/大小?
-
向我们展示您的价值观。我们无法验证什么是“正确”的数据。 您如何验证数据是否“正确”?
-
@mark-baker 这是文本
-
@deceze 在没有 PDO 的情况下手动直接使用相同的值进行了尝试,输入为“123456”,哈希为“$2y$10$HRnsvpIpuIxnSAXXezm/D.prUD6COgz/C0TUzDUF0d.UIcXZw/MdS”
-
所以您尝试验证的
$password已经被哈希...?!