我正在使用PHP的密码散列API在我正在构建的网站上散列和验证我的密码,但每当我尝试验证我的密码时,它总是返回false.
我有一个User类,它在将密码插入数据库之前设置密码:
public function set__password($passwd) {
self::$password = password_hash($passwd, PASSWORD_BCRYPT, array('cost' => 12));
}
Run Code Online (Sandbox Code Playgroud)
如果用户名和电子邮件是唯一的,则插入新的用户行 - 在检查我的数据库时,我的密码似乎是有效的BCRYPT字符串:
$2y$12$lTMEP0wevDEMX0bzStzoyOEzOTIAi3Hyhd3nYjGwzbI
Run Code Online (Sandbox Code Playgroud)
要验证我的密码,请运行以下脚本:
$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';
}
Run Code Online (Sandbox Code Playgroud)
$hash涉及到上面引述的字符串,但是当我然后调用password_verify($password, $hash)其中$password是从我的输入字段检索到的明文密码,我总是收到假值.
我已多次查阅API手册,无法看到我出错的地方,任何指针都将不胜感激!
问候,亚历克斯.
| 归档时间: |
|
| 查看次数: |
5413 次 |
| 最近记录: |