如何使用数据库中的哈希来验证password_verify()

时间:2015-09-15 11:01:36

标签: php mysql passwords

尝试通过POST用户输入验证数据库中的哈希密码。经过一些简短的研究后,似乎问题可能与无法将mysqli_query转换为字符串有关,虽然我不知道如何正确地做到这一点,因此我从另一个SO问题中添加了fetch_object()等。我还充分考虑了为varchar(255)设置列的has的长度。感谢任何帮助或指导,谢谢。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$password = $_POST['password'];
$db_password = mysqli_query($conn, 'SELECT password FROM sec')->fetch_object()->password;

if (password_verify($password, $db_password)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>

2 个答案:

答案 0 :(得分:1)

首先从数据库中获取密码哈希,然后在哈希值中转换用户输入密码。通过函数password_verify()比较这两个值,然后就可以得到正确的结果。

答案 1 :(得分:0)

hash.each_pair{|key, value| hash.[]= key, *value}