У меня есть сайт, на котором я программирую систему регистрации / входа password_hash()
а также password_verify()
, Я успешно вставил регистрационные данные с хешированным паролем в базу данных. Моя проблема заключается в том, как аутентифицировать пользователя, используя этот хешированный пароль.
Ниже приведен код аутентификации:
<?php
session_start();
$host="localhost";
$username="yyy";
$password="yyyy";
$db_name="yyyy";
$tbl_name="users";
$link = new mysqli("$host", "$username", "$password", "$db_name");
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
$username = mysqli_real_escape_string($link, $_POST['username']);
$pwd = mysqli_real_escape_string($link, ($_POST['password']));
$query = mysqli_query($link, "SELECT * from $tbl_name WHERE username='$username'"); //Query the users table if there are matching rows equal to $username
$exists = mysqli_num_rows($query); //Checks if username exists
$table_users = "";
$table_password = "";
$password = 0 ;
if($exists > 0) //IF there are no returning rows or no existing username
{
while($row = mysqli_fetch_assoc($query)) //display all rows from query
{
$table_users = $row['username']; // the first username row is passed on to $table_users, and so on until the query is finished
$table_password = $row['password']; // the first password row is passed on to $table_users, and so on until the query is finished
$password = (password_verify($pwd, $table_password));
}
if(($username == $table_users) && ($password))
{
if($password) {
$_SESSION['user'] = $username; //set the username in a session. This serves as a global variable
header("location: session.php"); // redirects the user to the authenticated home page
}
}
else
{
Print '<script>alert("Incorrect Password!");</script>';
Print '<script>window.location.assign("login.php");</script>';
}
}
else
{
Print '<script>alert("Incorrect Username!");</script>';
Print '<script>window.location.assign("login.php");</script>';
}
?>
password_verify()
кажется, всегда возвращать false или 0 «к $password
переменная.
Спасибо за любую помощь, спасибо.
Задача ещё не решена.
Других решений пока нет …