从数据库验证哈希密码

时间:2019-03-19 11:42:05

标签: php mysqli

因此,我有一个登录页面,该页面在没有哈希密码的情况下也可以正常工作,但是当然,这并不安全,因此我决定在注册时对密码进行哈希处理。 但是当我从数据库中选择密码时,我不知道如何以及在哪里使用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!
}

1 个答案:

答案 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