会话的“未定义索引”错误-PHP

时间:2018-09-01 07:11:20

标签: php session

我在登录部分使用会话。当用户登录时,我尝试从会话中提供用户名。我的代码运行良好,但是在我的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;
?>

2 个答案:

答案 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;
}