У меня есть форма входа и регистрации в php. Я создал несколько пользователей с этой регистрацией пользователя:
<?php
require 'database.php';
$message = '';
if (!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['username'])) {
$sql = "INSERT INTO users (email, password, username) VALUES (:email, :password, :username)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':username', $_POST['username']);
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$stmt->bindParam(':password', $password);
if ($stmt->execute()) {
$message = 'El usuario ha sido creado';
header("Location: login.php");
} else {
$message = 'Debes rellenar los tres campos';
}
}
?>
Я создал одного пользователя и пароль соответствует, но когда я go на мой логин, он говорит мне эту ошибку:
Попытка получить доступ к смещению массива для значения типа bool в C: \ xampp \ htdocs \ lapapaya \ login. php в строке 18 Это строка 18 в моем логине. php
if (count($results) > 0 && password_verify($_POST['password'], $results['password']))
И это полный код:
<?php
session_start();
if (isset($_SESSION['user_id'])) {
header('Location: lapapaya'.$user_id);
}
require 'database.php';
if (!empty($_POST['email']) && !empty($_POST['password'])) {
$records = $conn->prepare('SELECT id, email, password FROM users WHERE email = :email');
$records->bindParam(':email', $_POST['email']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
$message = '';
if (count($results) > 0 && password_verify($_POST['password'], $results['password'])) {
$_SESSION['user_id'] = $results['id'];
header("Location: /");
} else {
$message = 'Lo sentimos las claves no coinciden.';
}
}
?>
Кто-нибудь из вас мог видеть ошибку?