PHP 密码验证总是返回 false [重复]

2023-11-22

我正在使用 PHP 的密码哈希 API 来哈希并验证我正在构建的网站上的密码,但是每当我尝试验证我的密码时,它总是返回 false。

我有一个 User 类,它在将密码插入数据库之前设置密码:

public function set__password($passwd) {
    self::$password = password_hash($passwd, PASSWORD_BCRYPT, array('cost' => 12));
}

如果用户名和电子邮件是唯一的,则插入新用户行 - 检查我的数据库后,我的密码似乎有一个有效的 BCRYPT 字符串:

$2y$12$lTMEP0wevDEMX0bzStzoyOEzOTIAi3Hyhd3nYjGwzbI

为了验证我的密码,我运行以下脚本:

$username = $_POST['username'];
$password = $_POST['password'];

$DB = Database::getInstance();

// Get the stored password hash
$res = $DB->run__query('SELECT password FROM users WHERE username = "' . $username . '"');
$hash = $res[0]['password'];


// Do the passwords match?
if(password_verify($password, $hash)) {
    echo 'success';
} else {
    echo 'failed';
}

$hash属于上面引用的字符串,但是当我随后调用时password_verify($password, $hash) where $password是从我的输入字段检索到的纯文本密码,我总是收到 false 值。


给定的哈希字符串示例有 50 个字符,而不是 60 个。仔细检查数据库 - CHAR(60) - 和 var_dump($hash)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 密码验证总是返回 false [重复] 的相关文章