!password_verify()
не возвращает правильное логическое значение. На моей странице входа в систему, даже если я ввожу правильный пароль пользователя, он все равно попадает в оператор if и отображает сообщение об ошибке. Я сохранил хешированный и нехэшированный пароль в МОЕЙ таблице SQL для проверки, но ни в одном из случаев он не работает правильно.
<?php
include('database_connection.php');
include('helper.php');
session_start();
$errors = array();
$username = ((isset($_POST['username']))?
sanitize($_POST['username']):'');
$username = trim($username);
$password = ((isset($_POST['password']))?
sanitize($_POST['password']):'');
$password = trim($password);
if(isset($_SESSION['user_id'])){
header('Location: index.php');
}
if(isset($_POST['login'])){
if(empty($_POST['username']) || empty($_POST['password'])){
$errors[] = "You must provide email and password.";
}
$query_execute = $db->query("SELECT * FROM login WHERE username = '$username'");
$result = mysqli_fetch_assoc($query_execute);
$pass = $result['password'];
$count = mysqli_num_rows($query_execute);
if($count<1)
{
$errors[] = "The email does'nt exist in our database.";
}
if(!password_verify($password,$result['password'])){
$errors[] = "The Password Does Not Match Our Records. Please
Try Again.";
}
if(strlen($password) < 6){
$errors[] = "Password must be atleast of 6 characters.";
}
if(!empty($errors)){
echo display_errors($errors);
}
else{
$_SESSION['user_id'] = $result['user_id'];
$_SESSION['username'] = $result['username'];
$sub_query = "INSERT INTO login_details (user_id) VALUES
('".$result['user_id']."')";
$db->query($sub_query);
$_SESSION['login_details_id'] = mysqli_insert_id($db);
header('Location: index.php');
}
}
?>
Ожидаемое сообщение об ошибке не будет отображаться, если пользователь введет правильный пароль.