hash_password不等于哈希密码

时间:2017-05-29 09:40:50

标签: php hash

我有一个注册表单和一个登录表单。我尝试在注册期间使用函数hash_password

保存密码
$password = trim(mysqli_escape_string($conn,$_POST['inputPassword']));

$password_hash = password_hash($password, PASSWORD_DEFAULT);

$query_create_user = "INSERT INTO users (user_username, user_password, user_email) VALUES  ('$username', '$password_hash', '$email')";

$result = mysqli_query($conn, $query_create_user);

对于登录,我还使用函数密码哈希。

$password = trim(mysqli_escape_string($conn,$_POST['inputPassword']));

$password_hash = password_hash($password, PASSWORD_DEFAULT);

$query_verify_user = "SELECT user_id, user_username, user_password FROM users WHERE user_username = '$username'";

if($row['user_username']==$username && $row['user_password']==$password_hash){
Header('Location: ../index.php?page=login');
}

$ row [' user_password'] == $ password_hash永远不会相同。在注册期间,我有一个哈希标记。注册后,我无法获得与注册期间相同的哈希标记。有什么问题?

2 个答案:

答案 0 :(得分:1)

这是password_hash的预期行为,为了检查输入的密码是否正确,您应该使用password_hash的PHP文档中所述的password_verify。

意味着您的代码应该是这样的

$password = $_POST['inputPassword'];

$query_verify_user = "SELECT user_id, user_username, user_password FROM users WHERE user_username = '$username'";

if($row['user_username']==$username && password_verify($password, $row['user_password']){
    header('Location: ../index.php?page=login');
}

答案 1 :(得分:0)

要执行密码验证,请使用password-verifypassword_hash()使用强大的单向散列算法创建新的密码哈希。