PHP_verify函数以及如何使用我的代码验证它?

时间:2017-05-09 22:29:47

标签: php html mysql

所以昨天我在这里问到为什么我的代码没有创建一个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个多小时试图解决的问题,但仍然没有。

任何答案都表示赞赏!

2 个答案:

答案 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");
}