Как я могу реализовать систему контроля доступа с переменными сеанса? - PullRequest
0 голосов
/ 07 февраля 2019

На странице входа в систему я устанавливаю переменную сеанса с идентификатором (мы предполагаем, что идентификатор 1 всегда равен admin).Когда пользователь просматривает страницу, к которой имеет доступ только администратор, check.php действует как посредник, который проверяет, установлена ​​ли переменная сеанса, и если она равна 1, то он перенаправляет пользователя на страницу администратора, идругая страница, если это не так.Вот мой код:

<?php
    include "connection.php";
    session_start();

    #Check to see if session variables are set properly. Only the administrator can have access to this page
    if(!isset($_SESSION) || $_SESSION['id'] != 1) {
        header('Location: restricted.php');
        die();
    } else {
        header('Location: admin.php');
        die();
    }
 ?>

Когда я захожу на свою страницу входа в систему и успешно захожу с учетными данными администратора, и пробую страницу check.php, я перехожу к admin.php.Если я не вхожу в систему, она все равно переносит меня на страницу администратора.

В чем конкретно заключается проблема с этим сценарием?

1 Ответ

0 голосов
/ 07 февраля 2019

Потому что else будет выполняться, если условия не будут выполнены.Либо измените перенаправление в else, либо создайте другой набор условий.

 if(!isset($_SESSION) || $_SESSION['id'] != 1) { // CONDITION NOT MET
        header('Location: restricted.php');
        die();
    } else {
        header('Location: admin.php'); // REDIRECT OCCURS
        die();
    }
...