如何使用会话变量实现访问控制系统?

时间:2019-02-07 19:05:21

标签: php session access

在登录页面上,我设置了一个具有ID的会话变量(我们假设ID 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 :(得分:2)

因为如果不满足条件,则else将执行。在else中更改重定向或创建另一组条件。

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