Php 用户身份验证密码哈希

Php 用户身份验证密码哈希,php,mysqli,hash,Php,Mysqli,Hash,好的,我正在尝试建立一个基本的用户身份验证系统。我已经做到了。但是我现在要做的是检查用户密码和散列。我使用$hash=password\u hash($password,password\u DEFAULT);但是对于登录页面,我想用数据库中的哈希密码检查用户密码,以便他们可以登录。我该怎么做 Register.php: <?php include('config.php'); if ($conn->connect_error) { die("Connection fai

好的,我正在尝试建立一个基本的用户身份验证系统。我已经做到了。但是我现在要做的是检查用户密码和散列。我使用$hash=password\u hash($password,password\u DEFAULT);但是对于登录页面,我想用数据库中的哈希密码检查用户密码,以便他们可以登录。我该怎么做

Register.php:

    <?php
include('config.php'); 

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

function mres($input){
    if (get_magic_quotes_gpc()){
        $input = stripslashes($input);
    }
    return mysqli_real_escape_string($conn, $_POST['$input']);
}

$email=mysqli_real_escape_string($conn, $_POST['email']);
$username=mysqli_real_escape_string($conn, $_POST['username']);
$password=mysqli_real_escape_string($conn, $_POST['password']);
$hash = password_hash($password, PASSWORD_DEFAULT);
$query = $conn->query("select * from users where username='$username'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
echo "User already exist redirecting in 5 seconds!";
} else {
$sql = "INSERT INTO users (username, password, email)
VALUES ('$username', '$hash', '$email')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}

$conn->close();
header("Location: ../index.php");
?>

使用用户名从数据库中选择密码。从数据库中获取哈希密码,并在if语句中使用password\u verify(inputPassword,hashPassword)。

阅读此文档,我很抱歉,但它总是给我无效的密码。我很确定它会在不应该的时候为密码验证生成新的哈希。我只需要它来检查密码的散列或任何需要做的登录。我得到了它的工作,但它必须在同一个文件,因为它是散列。现在,当我将散列存储在一个表中,并希望根据用户输入在另一个文件中检查散列时,它将不起作用。然后,您的数据在存储和重复使用之间变得格式不正确,并且没有代码示例,这里的任何人都无法进一步帮助您。
<?php
session_start();
include('config.php'); 

$error=''; 

if (isset($_POST['submit'])) {
if (empty($_POST['userid']) || empty($_POST['passid'])) {
$error = "Username or Password is invalid";
}
else
{


$user=mysqli_real_escape_string($conn, $_POST['userid']);
$pass=mysqli_real_escape_string($conn, $_POST['passid']);
$hash = password_hash($pass, PASSWORD_DEFAULT);
$passv = password_verify($pass, $hash);
$query = $conn->query("select * from users where password='$passv' AND username='$user'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
$_SESSION['login_user']=$username;
$_SESSION['username']=$user;
$_SESSION['checklogin']== true;
header("location: ../profile.php"); 
} else {
$error = "Username or Password is invalid";
}
mysqli_close($conn);
}
}   
?>