Ошибка «неопределенный индекс» для сессии - php - PullRequest
0 голосов
/ 01 сентября 2018

Я использую сеанс для моего раздела входа. Когда пользователь вошел в систему, я пытаюсь дать имя пользователя из сеанса. Мой код работает хорошо, но в моем файле 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 голосов
/ 01 сентября 2018

Вы должны проверить сеанс пользователя

Попробуйте это:

if(!isset($_SESSION['login_user_admin']))
{
    session_destroy();
    echo "<script>window.location='index.php';</script>";
    exit;
}
0 голосов
/ 01 сентября 2018

Вы не проверяете, существует ли "login_user_admin" в $ _SESSION или нет. Замените $user_check = $_SESSION['login_user_admin']; на этот

if(isset($_SESSION['login_user_admin'])){
    $user_check = $_SESSION['login_user_admin'];
}else{
    $user_check = null;
}

Вы всегда можете проверить, существует ли индекс в $ _SESSION, используя isset. Когда вы пытаетесь получить значение из $ _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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...