PHP密码检查PDO每次返回false
我有这个PHP代码。变量$password分配了正确的静态密码(无需验证用户输入) $data['password']在使用echo打印时也返回正确的哈希值 但不知何故,密码验证函数在此函数中不起作用。当我用同样的输入手动使用它时,它工作得很好 也许PDO查询有问题,但我不知道是什么PHP密码检查PDO每次返回false,php,mysql,pdo,verify,Php,Mysql,Pdo,Verify,我有这个PHP代码。变量$password分配了正确的静态密码(无需验证用户输入) $data['password']在使用echo打印时也返回正确的哈希值 但不知何故,密码验证函数在此函数中不起作用。当我用同样的输入手动使用它时,它工作得很好 也许PDO查询有问题,但我不知道是什么 $this->mysql->query("SELECT * FROM user WHERE username = :username LIMIT 1"); $this->mysql
$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;
}
所以我想出来了。
数组中有一些空格,但我不知道它们来自哪里。
所以我使用了trim()
函数来删除这些空白,现在一切都正常了
谢谢你的快速帮助 如果您的数据库中有密码列,则数据类型/大小是什么?向我们显示您的值。我们无法验证什么是“正确的”数据。你是如何验证数据“正确”的?@mark bakertext@deceze它在没有PDO的情况下直接手动使用相同的值进行了尝试。输入是“123456”,散列是“$2y$10$HRNSVPIPUIXNSAXEZM/D.prUD6COgz/C0TUzDUF0d.UIcXZw/MdS”,因此您尝试验证的
$password
,已经散列了。。。?!