阻止用户访问每个用户页面

时间:2016-07-02 23:21:08

标签: php session

我有3种用户[admin,student,instructor],我想阻止每个用户访问每个页面。例如,当为学生开始会话时,学生不能访问管理页面或教师,也不能访问其他用户。 这是我申请的代码

@session_start();

if(!$_SESSION['user']){

    header("Location: HTTP/1.1 404 File Not Found", 404);

    exit();

}

但是如果会话尚未启动,此代码将阻止用户不访问该页面。

此外,我将此应用到我的管理页面,因为管理员用户是固定用户,所以它可以正常运行。

@session_start();

if((!$_SESSION['user']) or ($_SESSION['user']!='admin'))
{

    header("Location: HTTP/1.1 404 File Not Found", 404);
    exit();

}

我看到了一些答案,但没有帮助解决我的问题。请帮帮我。

2 个答案:

答案 0 :(得分:1)

我认为应该是最好的,如果你创建了一个单独的PHP文件,承担了将用户发送到用户级别的正确目的地的任务,这将反过来呈现重定向到404 page毫无意义。

为此,我会编写您的PHP代码,如下所示:

<?php
    session_start();
    if (isset($_SESSION["user"])) {
        switch ($_SESSION["user"]) {
            case "user":
                // redirect to the "user" page
            case "instructor":
                // redirect to the "instructor" page
            case "admin":
                // redirect to the "admin" page
        }
    }
?>

这样做,您将确保每个用户始终登陆到用户级别的正确页面,您无需将用户重定向到丑陋的404页面。

答案 1 :(得分:0)

我建议您编写一个简单的函数,如果它们尚未登录 - 将它们显示为登录表单,如果它们已登录但是它们没有足够的权限,请告诉它们并将它们转发回去他们访问的上一页或主页。

<?php
   session_start();
   if (!isLoggedIn())
      logonForm();
   else if ($_SESSION["user"] != "admin")
      {
         echo "You don't have the sufficient privileges to open this page.";
         header( "refresh:5; url=index.php" );
      }
    else
      display();
?>

您还可以将上述内容包装到一个函数中,以便将其包含在每个页面中。