首页 文章

我正在使用bcrypt登录问题

提问于
浏览
1

如果这是一个愚蠢的问题,或者它是在错误的地方,我会提前道歉 . 这是我第一次来这里 . 我整天都被困在这里,似乎无法解决问题 . 我之前从未使用过bcrypt,但我遵循了几个在线教程,并且我能够创建一个正常运行的注册页面 . 这是加密代码:

$password = password_hash($password, PASSWORD_DEFAULT)."\n";

注册页面工作正常,密码在数据库中加密 . 根据我的理解,在登录页面中发生的事情是我们使用Select语句获取用户输入的用户名/电子邮件的哈希密码,然后我们使用password_verify . 所以这是我的代码:

$email = $_POST['user_email'];
$password = $_POST['user_password'];


$stmt = $db->prepare("SELECT Password FROM user WHERE Email= :email");
$stmt->execute(array(':email' => $email));
$hash = $stmt->fetchColumn(0);

if (password_verify($password, $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

出于某种原因,它仍然一直说“密码无效” . 我尝试打印select语句返回的哈希,以确保它是数据库中的那个,它是 . 我也尝试复制哈希并将其放在password_verify中以尝试找出问题所在,但它仍然无法正常工作 . 你对我有什么想法吗?

谢谢大家:o)

1 回答

  • 2

    当您生成哈希时,请不要使用 ."\n" I 'm pretty sure you'将新行添加到数据库中 . 打印时它看起来很好,但从不验证 .


    工作:

    $password = 'test';
    $hash = password_hash($password, PASSWORD_DEFAULT);
    
    if (password_verify($password, $hash)) {
        echo 'Password is valid!';
    } else {
        echo 'Invalid password.';
    }
    

    输出:

    Password is valid!
    

相关问题