因此,我有一个登录页面,该页面在没有哈希密码的情况下也可以正常工作,但是当然,这并不安全,因此我决定在注册时对密码进行哈希处理。
但是当我从数据库中选择密码时,我不知道如何以及在哪里使用verify_password。
我用一段时间来查看是否输入了这样的用户名和密码:
$q = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$x = $conn->query($q);
if ($x->num_rows > 0) {
while ($row = $x->fetch_assoc()) {
//Logged in seccesfully!
}
} else {
// Username or password is wrong!
}
答案 0 :(得分:0)
password_hash()函数可以简化我们的生活,并且我们的代码可以安全。当您需要对密码进行哈希处理时,只需将其提供给函数,它将返回可以存储在数据库中的哈希值。
$hash = password_hash($password, PASSWORD_DEFAULT);
现在,您已经了解了如何使用新的API生成哈希,现在让我们看看如何验证密码。请记住,您将哈希存储在数据库中,但这是用户登录时获得的普通密码。 password_verify()函数采用普通密码和哈希字符串作为其两个参数。如果哈希与指定的密码匹配,则返回true。
<?php
if (password_verify($password, $hash)) {
// Success!
}
else {
// Invalid credentials
}
有关更多信息,read