用户登录时密码未验证

时间:2021-05-16 06:59:58

标签: php codeigniter-4

这是我的控制器。只有 else 部分在 if 循环中执行。用户输入密码时如何验证密码?

以下函数没有返回 true,我不明白为什么。我没有收到任何数据库错误,但由于某种原因它肯定会返回 false。表名和字段名正确。

6 6

1 个答案:

答案 0 :(得分:0)

改变

$password = md5($this->request->getVar('password'));

$password = password_hash($this->request->getVar('password'), PASSWORD_DEFAULT);

password_verify 不仅仅适用于任何哈希,它还需要算法和盐信息;这是password_hash为您处理的事情。

php > $hash = md5('abc123');
php > var_dump(password_verify('abc123', $hash));
php shell code:1:
bool(false)
php > $hash = password_hash('abc123', PASSWORD_DEFAULT);
php > var_dump(password_verify('abc123', $hash));
php shell code:1:
bool(true)

这也解决了在任何情况下都不应该使用 MD5 来混淆密码的事实。