基本上,我刚刚开始使用PHP,并试图掌握password_hash函数。当用户注册时,我使用以下方法散列他们的密码:
$hashed_password = password_hash($p, PASSWORD_DEFAULT);
然后,散列密码存储在我的数据库中。然后我想检索登录密码。因此,我的代码是这样编写的,一旦提交表单,电子邮件和密码字符串就会被清理,检查它们是否为空,一旦完成,我就接受用户输入的密码,并使用以下方法对其进行哈希:
$hash = password_hash($password, PASSWORD_DEFAULT);
再一次完成后,我连接到数据库,并尝试使用以下选项选择用户:
$q = "SELECT * FROM users
WHERE email='$email' AND password='$hash'";
然而在调试时,我注意到用户输入的字符串,尽管与注册时输入的字符串相同,但散列后的字符串不同。所以我一直在回复$hash并得到:
$2y$10$LQ55Q1DUqIgRx/2hgnbrnuQrYvrrBrq4WEFmV8TuxII6rDocaWzt2
但数据库中存储的字符串“password”完全相同:
$2y$10$omNPA7cviUm.6asuhJIJ8Or.m9WeHhJMkCqYYijel5g.NflbdVnV.
我如何获取它,以便当用户输入密码时,它对字符串进行哈希并与数据库中的字符串匹配,以便他们可以登录?我错过了什么吗
干杯