我已经在我的网站上添加了一个登录系统,但是信息似乎没有正确地存储在会话中。当我试图打开目标页面时,我试图回显用户的id,但是我得到了错误:“试图访问null类型值上的数组偏移量”。从我所看到的,这不应该是空的,因为它是在我的login.php脚本中设置的。关于更多信息,我已经包括了注册、登录和功能脚本。任何帮助都将不胜感激。
login.php:
<?php
session_start();
require ("connection.php");
require ("functions.php");
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
if (isset($_POST['email']) || isset($_POST['password']))
{
$email = $_POST['email'];
$password = $_POST['password'];
if (!empty($email) && !empty($password))
{
$query = ("select * from users where email = '$email' and password = '$password' and organiser_yn = 'N' limit 1");
$result = mysqli_query($con, $query);
$query2 = ("select * from users where email = '$email' and password = '$password' and organiser_yn = 'Y' limit 1");
$result2 = mysqli_query($con, $query2);
if ($result)
{
if ($result && mysqli_num_rows($result) > 0)
{
$user_data = mysqli_fetch_assoc($result);
$_SESSION['user_id'] = $user_data['user_id'];
header("Location: EventPlannerSignedIn.php");
die;
} elseif ($result2 && mysqli_fetch_assoc($result2) > 0)
{
$user_data2 = mysqli_fetch_assoc($result2);
$_SESSION['user_id'] = $user_data2['user_id'];
header("Location: EventPlannerOrganiser.php");
die;
}
else
{
echo "Email or password is incorrect.";
}
}
}
}
}
?>
signup.php:
<?php
session_start();
include("connection.php");
include("functions.php");
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(isset($_POST['name']) || isset($_POST['email']) || isset($_POST['password']) )
{
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
if(!empty($email) && !empty($password))
{
$user_id = random_num(20);
$query = "insert into users (user_id,name,email,password) values ('$user_id','$name','$email','$password')";
mysqli_query($con, $query);
header("Location: login.php");
die;
}
else
{
echo "The information you have entered is invalid.";
}
}
}
?>
目标页面
<?php
session_start();
include("connection.php");
include("functions.php");
$user_data2 = check_login($con);
?>
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<?php echo $user_data2['user_id'];?>
</body>
</html>
功能:
<?php
function check_login($con)
{
if(isset($_SESSION['user_id']))
{
$id = $_SESSION['user_id'];
$query = "select * from users where user_id = '$id' limit 1";
$result = mysqli_query($con,$query);
if($result && mysqli_num_rows($result) > 0)
{
$user_data = mysqli_fetch_assoc($result);
return $user_data;
}
}
die;
}
?>
1条答案
按热度按时间2exbekwf1#
尝试
因为您没有在$userdata2中存储任何内容,甚至没有初始化该变量、会话或实际数据库中的任何数据。