这就是我加密密码的方式。
$password_encrypted = password_hash($password, PASSWORD_DEFAULT);
这就是我得到价值并检查它的方式:
<?php
include("config.php");
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST['uname']);
$mypassword = mysqli_real_escape_string($db,$_POST['psw']);
$result = mysqli_query(
$db,
"SELECT password FROM interna_dostop WHERE up_name = '$myusername'");
$row = mysqli_fetch_array($result);
$hash = $row['password'];
echo $hash;
echo $mypassword;
echo $myusername;
if (password_verify('$mypassword','$hash')) {
header('Location: another.php'); exit;
} else {
echo 'Invalid password.';
}
}
?>
现在这是有趣的部分。这返回false。但如果我输入password_verify('mypass','encrypted_pass'),我会成真吗?
有什么想法吗?
答案 0 :(得分:0)
您将$mypassword
和$hash
用单引号传递给password_verify()
。不需要单引号。
password_verify($mypassword,$hash)
答案 1 :(得分:0)
password_verify中的变量不会被解释为单引号内的变量。您需要删除单引号。
if (password_verify($mypassword, $hash)) {