Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP密码检查PDO每次返回false_Php_Mysql_Pdo_Verify - Fatal编程技术网

PHP密码检查PDO每次返回false

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

我有这个PHP代码。变量$password分配了正确的静态密码(无需验证用户输入)

$data['password']在使用echo打印时也返回正确的哈希值

但不知何故,密码验证函数在此函数中不起作用。当我用同样的输入手动使用它时,它工作得很好

也许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;           
    }
所以我想出来了。 数组中有一些空格,但我不知道它们来自哪里。 所以我使用了
trim()
函数来删除这些空白,现在一切都正常了


谢谢你的快速帮助

如果您的数据库中有密码列,则数据类型/大小是什么?向我们显示您的值。我们无法验证什么是“正确的”数据。你是如何验证数据“正确”的?@mark bakertext@deceze它在没有PDO的情况下直接手动使用相同的值进行了尝试。输入是“123456”,散列是“$2y$10$HRNSVPIPUIXNSAXEZM/D.prUD6COgz/C0TUzDUF0d.UIcXZw/MdS”,因此您尝试验证的
$password
,已经散列了。。。?!