【问题标题】:PHP password_verify PDO returns false every timePHP password_verify PDO 每次都返回 false
【发布时间】: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 已经被哈希...?!

标签: php mysql pdo verify


【解决方案1】:

所以我想通了。 数组中有一些空格,但我不知道它们来自哪里。 所以我使用trim() 函数来删除这些空格,现在一切正常。

感谢您的快速帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    相关资源
    最近更新 更多