首页 > 解决方案 > password_verify 始终返回 false

问题描述

我在password_verify验证密码时遇到问题。

我将密码存储在数据库中

password_hash($password, PASSWORD_DEFAULT)

在登录页面上,我让用户输入他们的用户名和密码并通过 post 方法检索输入$_POST['pwd'](这是用户输入的密码)。

然后我从数据库中检索哈希密码,并根据登录密码检查它

if(password_verify($password, $results['password']))

我似乎无法弄清楚为什么密码似乎永远不会匹配。我读过过滤器/转义也可以影响password_verify()和改变它并得到相同的结果。任何帮助,将不胜感激。

    <?PHP 
     include('connection.php');

    if(isset($_POST['submit'])){
    $username = trim(filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING));
    $password = trim(filter_input(INPUT_POST, 'pwd', FILTER_SANITIZE_STRING));
    $sql = $db->query("SELECT password FROM users WHERE username = '$username'");
    $results = $sql->fetch(PDO::FETCH_ASSOC);

    $savedHash =  $results['password'];

    //echo $savedHash;

    if(password_verify($password, $savedhash)){
    echo "yes " . $password;
    }else{
    echo "no";
    }         
    ?>

标签: phpauthentication

解决方案


推荐阅读