我在登录部分使用会话。当用户登录时,我尝试从会话中提供用户名。我的代码运行良好,但是在我的error_log文件中,出现以下错误。您能帮我解决问题吗?
error_log.php
[01-Sep-2018 01:57:20 America/Chicago] PHP Notice: Undefined index: login_user_admin in /home/cp31481/public_html/admin/session.php on line 5
[01-Sep-2018 01:57:20 America/Chicago] PHP Notice: Undefined index: login_user_admin in /home/cp31481/public_html/admin/index.php on line 35
[01-Sep-2018 01:57:20 America/Chicago] PHP Warning: mysqli::query(): Couldn't fetch mysqli in /home/cp31481/public_html/admin/index.php on line 37
[01-Sep-2018 01:57:20 America/Chicago] PHP Fatal error: Uncaught Error: Call to a member function fetch_assoc() on null in /home/cp31481/public_html/admin/index.php:38
Stack trace:
#0 {main}
thrown in /home/cp31481/public_html/admin/index.php on line 38
[01-Sep-2018 01:57:28 America/Chicago] PHP Notice: Undefined index: login_user_admin in /home/cp31481/public_html/admin/session.php on line 5
[01-Sep-2018 01:57:28 America/Chicago] PHP Notice: Undefined index: login_user_admin in /home/cp31481/public_html/admin/index.php on line 35
[01-Sep-2018 01:57:28 America/Chicago] PHP Warning: mysqli::query(): Couldn't fetch mysqli in /home/cp31481/public_html/admin/index.php on line 37
[01-Sep-2018 01:57:28 America/Chicago] PHP Fatal error: Uncaught Error: Call to a member function fetch_assoc() on null in /home/cp31481/public_html/admin/index.php:38
session.php
<?php
session_start();
include "db.php";
$user_check = $_SESSION['login_user_admin'];
$ses_sql = "select username from users where type = 'admin' AND username='$user_check'";
$result = $connection->query($ses_sql);
$row = $result->fetch_assoc();
$login_session = $row['username'];
if (!isset($login_session)) {
mysqli_close($connection);
header('Location: admin.php');
}
index.php
<?php
$user_check = $_SESSION['login_user_admin'];
$sql = "select name,img from users where type = 'admin' AND username='$user_check'";
$result = $connection->query($sql);
$row = $result->fetch_assoc();
$name = $row['name'];
$img = $row['img'];
echo "<img src='../img/$img' alt ='avatar'>";
echo $name;
?>
答案 0 :(得分:0)
您无需检查$ _SESSION中是否存在“ login_user_admin”。将$user_check = $_SESSION['login_user_admin'];
更改为此
if(isset($_SESSION['login_user_admin'])){
$user_check = $_SESSION['login_user_admin'];
}else{
$user_check = null;
}
您始终可以使用isset检查$ _SESSION中是否存在索引。当您尝试从$ _SESSION获取值并且$ _SESSION中不存在该索引时,脚本会引发通知错误,由于您的错误设置,该错误有时被隐藏
if(isset($_SESSION['login_user_admin'])){
$user_check = $_SESSION['login_user_admin'];
$sql = "select name,img from users where type = 'admin' AND username='$user_check'";
$result = $connection->query($sql);
$row = $result->fetch_assoc();
$name = $row['name'];
$img = $row['img'];
}else{
$img = null;
}
答案 1 :(得分:0)
您必须检查用户会话
尝试一下:
if(!isset($_SESSION['login_user_admin']))
{
session_destroy();
echo "<script>window.location='index.php';</script>";
exit;
}