我试图验证用户的登录信息并比较两个密码(它们在数据库中进行哈希处理)。我很确定它只是一些我无法找到的愚蠢的错误或错误。这是我在保存到db时的哈希方式。 $password = password_hash($_POST["password"], PASSWORD_BCRYPT);
这是我的登录方法:
if(isset($_POST['login'])){
$stmt = $mysqli->prepare("SELECT `password` FROM users WHERE username=?");
$stmt->bind_param("s", $username);
$username = $_POST["username"];
$password = $_POST["password"];
$stmt->execute();
$stmt->bind_result($result);
if(password_verify($password, $result)){
header("Location: http://localhost/test2/Home.php");
}
else{
echo "<script type='text/javascript'>alert('Something went wrong!')</script>";
echo $mysqli->error;
echo $stmt->error;
}
}
出于测试目的,我尝试echo
错误,但它没有显示任何内容。
答案 0 :(得分:0)
忘记从查询结果中获取数据
$stmt->execute();// execute query
$stmt->bind_result($result);// bind result
while ($stmt->fetch()) {// fetch data
$pass = $result;
}
if (password_verify($password, $pass)) {
header("Location: http://localhost/test2/Home.php");
}
答案 1 :(得分:-1)
更改
if(password_verify($password, $result)){
要
if(password_verify($password, $result['password'])){