Я рассмотрел другие вопросы / ответы, связанные с этим, и попытался изменить свой код несколькими способами, чтобы они соответствовали их ответам, но безуспешно. У меня есть форма регистрации, которая отлично работает и успешно добавляет пользователя в базу данных с помощью функции password_hash. Поле пароля — VARCHAR (255) и отображается как хешированный при вводе.
Проблема с формой входа. Я пробовал разные способы весь день безуспешно. Ниже мой текущий скрипт login.php.
<?php
session_start(); // Starting Session
$error=''; // Variable To Store Error Message
if (isset($_POST['submit'])) {
//error if both boxes empty
if (empty($_POST['email']) || empty($_POST['password'])) {
$error = "Please fill in both boxes";
}
else
{
// connecting, selecting database
require_once 'dbstuff.php';
include 'opendb.php';
// To protect MySQL injection for Security purpose and define $email and $password
$email = mysqli_real_escape_string($cxn,$_POST['email']);
$password = mysqli_real_escape_string($cxn,$_POST['password']);//selects user = to email given
$sel_user = "SELECT * from Customer WHERE email='$email'";
$result = $cxn->query($sel_user);
//if matched email in DB verifies password given with hashed password in DB
if($result->num_rows ===1){
$row = $result->fetch_array(MYSQLI_ASSOC);
if (password_verify($password, $row['password'])){
echo "match";
//$_SESSION['login_user']=$email; // Initializing Session
//header("location: index.php"); // Redirecting To Other Page
} else {
$error = "email or Password is invalid";
}
}
mysqli_close($cxn); // Closing Connection
}
}
?>
Переменная $ error работает нормально, но все еще не видит, где я ошибаюсь с password_verify, продолжайте получать ошибку «email или пароль недействителен» вместо «match».
Я действительно буду признателен за отзывы о том, что я пропустил в коде! Спасибо 🙂
Задача ещё не решена.
Других решений пока нет …