PH: ошибка возникает при нажатии кнопки браузера назад после уничтожения сеанса - PullRequest
0 голосов
/ 21 января 2020

основываясь на моем вопросе выше, я нажимаю кнопку выхода из системы при перенаправлении на начальную страницу index.php. На index.php, когда я нажал кнопку возврата браузера, отобразится сообщение:

"Неопределенный индекс: login_user в C: \ inetpub \ wwwroot \ ebooking \ pages \ dashboard \ admin \ dashboard_admin. php в строке 6 "

, когда я снова нажму кнопку" Назад ", он будет перенаправлен обратно на индекс. php. Ниже мой код:

index. php

<?php
    include("config/configPDO.php");
    session_start();

    $msg = ""; 
    if(isset($_POST['submitBtnLogin'])) {
    $User_ID = trim($_POST['Email']);
    $email=explode('@',$User_ID);
    if (is_array($email)){
        $User_ID=$email[0];
    }
    $Pwd = trim($_POST['Pwd']);
    if($User_ID != "" && $Pwd != "") {

        $ldap_dn = "TOPPOP\\".$User_ID;
        $ldap_password = $Pwd;

        $ldap_con = ldap_connect("ldap://xxx.xx.xx.xx:xxx");
        ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);

        if(@ldap_bind($ldap_con,$ldap_dn,$ldap_password)){;
            try {

                $records = $conn->prepare("SELECT Email, Role_ID, Pwd FROM Staff WHERE User_ID = :User_ID ");
                $records->execute(
                    array(  
                    'User_ID'     =>    $User_ID,
                    )  
                );
                $results = $records->fetch(PDO::FETCH_ASSOC);

                $message = '';

                if($results && count($results) > 0 ){
                    $_SESSION['login_user'] = $results["Email"];
                    if($results["Role_ID"] == "2"){ 
                        header("location: pages/dashboard/admin/dashboard_admin.php");
                    }else if ($results["Role_ID"] == "3"){ 
                        header("location: pages/dashboard/super_admin/dashboard_super_admin.php");
                    }else if ($results["Role_ID"] == "1"){ 
                        header("location: pages/dashboard/normal_user/dashboard_normal_user.php");
                    }
                } else {
                    echo "
                    <script>alert('You're not authorized to use this system')</script>
                    <script>window.location = 'index.php'</script>
                    ";
                }

            } catch (PDOException $e) {
                echo "Error : ".$e->getMessage();
            }
        } else{ 
        echo "
        <script>alert('Invalid Email or Password')</script>
        <script>window.location = 'index.php'</script>
        ";
        }

    } else {
        $msg = "Both fields are required!";
    }
}
?>

dashboard_admin. php (содержит выход из системы)

<?php

require_once "../../../config/configPDO.php";
require_once "../../../config/check.php";
$Email = $_SESSION['login_user'];   //line 6

?>

проверка. php

<?php
session_start();

if(isset($_SESSION['login_user']) === false){
    header("Location: logout.php");
}

?>

выход. php

  <?php
     session_start();

     session_destroy();

     header("Location: ../index.php");
  ?>

Ответы [ 2 ]

1 голос
/ 21 января 2020

Неопределенный индекс в dashboard_admin. php в 6-й строке. Ошибка была вызвана попыткой получить неопределенный индекс суперглобального массива $_SESSION - он не существует. Следующая операция дает вам возможность проверить: если индекс login_user установлен в $_SESSION => использовать значение из $_SESSION['login_user'], в противном случае используйте ''.

$Email = $_SESSION['login_user'] ?? '';   //line 6

или

$Email = isset($_SESSION['login_user']) ? $_SESSION['login_user'] : '';   //line 6
1 голос
/ 21 января 2020

Просто сначала проверьте, установлен ли login_user в сеансах, см. Код ниже

isset($_SESSION['login_user']) // will return boolean
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...