如果这是一个愚蠢的问题,或者它是在错误的地方,我会提前道歉 . 这是我第一次来这里 . 我整天都被困在这里,似乎无法解决问题 . 我之前从未使用过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 回答
当您生成哈希时,请不要使用
."\n"
I 'm pretty sure you'将新行添加到数据库中 . 打印时它看起来很好,但从不验证 .工作:
输出: