所以昨天我在这里问到为什么我的代码没有创建一个password_hash()不起作用,我终于在一些用户的帮助下得到了它的工作(非常感谢!)现在我的下一个情况是验证它password_verify()。以下是我的代码,你能告诉我我做错了吗?我是password_verify的新手,因为我刚被告知使用它而不是md5。 (我知道我的代码可能有SQL注释,一位朋友正在帮助我显示如何预防它)
<?php
/*
*
* Copyright 2017 by Jarrod Estepp
* This script is private software and is illegal to
* use without consent from Jarrod Estepp - hello@jarrodestepp.me
*
* login_process.php
*/
include('../includes/settings.php');
include('../includes/mysql.php');
//Grab Login Info
$email = $_POST['email'];
$password = $_POST['password'];
//verify password
$stored_pass = $conn->query("SELECT password FROM admins WHERE email = '$email'");
$password_verify = password_verify($password, $stored_pass);
$sql = "SELECT * FROM admins WHERE email = '$email' AND password = '$password_verify'";
$result = $conn->query($sql);
if (!$row=mysqli_fetch_assoc($result)) {
header("location: {$website_domain}/admin/login?s=1");
} else {
session_start();
$_SESSION['id'] = $row['id'];
$_SESSION['loggedIn'] = true;
header("location: {$website_domain}/admin/dashboard");
}
?>
如果您还需要其他任何帮助(任何其他文件),我将很乐意对此发表评论。我非常感谢任何人的帮助,因为我正在学习编码,这是我花了5个多小时试图解决的问题,但仍然没有。
任何答案都表示赞赏!
答案 0 :(得分:0)
我认为这一行是你的问题
$sql = "SELECT * FROM admins WHERE email = '$email' AND password = '$password_verify'";
所以password_verify()函数基本上返回一个true或false的布尔值,根据我的需要你需要这样的东西: -
if (!$password_verify) {
header("location: {$website_domain}/admin/login?s=1");
} else {
session_start();
$_SESSION['id'] = $row['id'];
$_SESSION['loggedIn'] = true;
header("location: {$website_domain}/admin/dashboard");
}
我认为这样可以解决您遇到的错误。
答案 1 :(得分:0)
您的方法不正确,password_verify返回一个布尔值(如果密码和哈希匹配则返回TRUE,否则返回FALSE)。密码加密使用不可逆机制,换句话说,它不可能解密密码。 password_verify方法加密给定的密码,并将哈希值与数据库保存的哈希值进行比较,如果匹配的密码是相同的。
然后将您的代码更新为:
if (!$password_verify) {
header("location: {$website_domain}/admin/login?s=1");
} else {
$sql = $conn->query("SELECT * FROM admins WHERE email = '$email'");
$result = $conn->query($sql);
$row=mysqli_fetch_assoc($result);
session_start();
$_SESSION['id'] = $row['id'];
$_SESSION['loggedIn'] = true;
header("location: {$website_domain}/admin/dashboard");
}