登录页面"Warning: Trying to access array offset on value of type bool"错误



我目前正在为一个学校项目制作一个网站,并正在制作一个用户注册系统。目前,注册部分可以完美地处理进入MySQL数据库的用户数据。然而,我的登录页面似乎坏了。每次我尝试登录时,我都会收到以下错误:

警告:试图访问第23行中D:\XAMPP\htdocs\hennorist\login.php中bool类型值的数组偏移量

附件是有问题的PHP代码:

<?php

require_once "config.php";
require_once "session.php";
$error = '';
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submit'])) {

$email = trim($_POST['email']);
$password = trim($_POST['password']);

//validate if email is empty
if (empty($email)) {
$error .= '<p class="error">Please enter email.</p>';
}

if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch();
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;

//Redirect user to welcome page
header("location: exclusive.php");
exit;
} else {
$error .= '<p class="error">The password is not valid.</p>';
}
} else {
$error .= '<p class="error">No user exists with that email address.</p>';
}
}
$query->close();
}
//Close connection
mysqli_close($db);
}
?>

您是否被迫使用PDO驱动程序?作为一个初学者,这对你来说会有点棘手,但我建议你使用MySQLi,

在连接到数据库的附带文件(猜测config.php(中,确保连接将PDO类实例化为$query=新PDO("mysql:host=$servername;dbname=$dbname",$username,$password(;

然后要关闭连接,请使用$query=null;而不是mysqli_close($db(;

假设您理解尝试执行以下代码

<?php

require_once "config.php";
require_once "session.php";
$error = '';
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submit'])) {

$email = trim($_POST['email']);
$password = trim($_POST['password']);

//validate if email is empty
if (empty($email)) {
$error .= '<p class="error">Please enter email.</p>';
}

if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;

//Redirect user to welcome page
header("location: exclusive.php");
exit;
} else {
$error .= '<p class="error">The password is not valid.</p>';
}
} else {
$error .= '<p class="error">No user exists with that email address.</p>';
}
}
}
//Close connection
$query=null;
}
?>

最新更新