PHP-限制登录用户访问管理页面

PHP-限制登录用户访问管理页面,php,mysql,session,Php,Mysql,Session,我的数据库中有一个用户表,每个用户都有一个身份验证级别(1-3)。在我的网站上,我有一个用于添加/删除新用户帐户的管理页面,我想将此页面的访问权限限制为只有身份验证级别为3的用户。 我一直在尝试让它与会话一起工作,但我被卡住了。希望有人能帮我 这是我限制访问的代码。我不知道我哪里出错了。 php启动会话 <?php require_once('check.php'); //This function returns True if auth level = '3' //Otherwise

我的数据库中有一个用户表,每个用户都有一个身份验证级别(1-3)。在我的网站上,我有一个用于添加/删除新用户帐户的管理页面,我想将此页面的访问权限限制为只有身份验证级别为3的用户。 我一直在尝试让它与会话一起工作,但我被卡住了。希望有人能帮我

这是我限制访问的代码。我不知道我哪里出错了。 php启动会话

<?php
require_once('check.php');

//This function returns True if auth level = '3'
//Otherwise it returns False
function CheckAccess()
{
    $result = (isset($_SESSION['SESS_AUTH_LEVEL']) &&  $_SESSION['SESS_AUTH_LEVEL'] == 3 );

    if(!$result)
    {
        header('WWW-Authenticate: Basic realm=“Test restricted area”');
        header('HTTP/1.0 401 Unauthorized');
        return false;
    }
    else
    {
        header("location: admin.php");
    }
}
?>


如果我以auth级别1或3的用户身份登录,我会得到相同的空白页。

您缺少函数的结束符
}
,因此所有If语句都被PHP视为方法的一部分

如果

一个稍微有点另类的版本应该可以实现你想要的

<?php

function CheckAccess() {
    $result = (isset($_SESSION['SESS_AUTH_LEVEL']) &&  $_SESSION['SESS_AUTH_LEVEL'] == 3 );
    return $result;
}

if (CheckAccess()) {
    header("location: admin.php");
} else {
    header('WWW-Authenticate: Basic realm=“Test restricted area”');
    header('HTTP/1.0 401 Unauthorized');
}

问题是在发送头之前已经有输出:
这需要改变

<?php
require_once('check.php');
?>

<?php

//This function returns True if auth level = '3'


//Otherwise it returns False
function CheckAccess()
{
...


我想你从来没有调用过
CheckAccess()
。调用它可能会修复您的错误。

执行函数正在执行的以下操作是完全有效的

if (this=that) { /*do multiple*/ } else //do single;
但是,您似乎没有调用此函数?试试这个:

<?php
  require_once('check.php');
  CheckAccess();
?>


Add
ini\u集(“显示错误”,1)在您的页面顶部。我想知道如果我以未经授权的用户身份直接加载“admin.php”,会发生什么。@Rikesh:他不是。当没有
{
else
之后,它将执行找到的第一行代码。您应该决定:它是返回
true
用户是否可以访问,还是将用户发送到新页面?您确定他的CheckAccess函数不包括if吗?注意关闭
}
else头之后…
否。当
else
之后没有
{
时,它将执行找到的第一行代码,并且不需要
}
成功!非常感谢…现在开始工作。我没有调用函数!D'ohI抱歉?什么输出?除非你在
check.php中假设了什么,移动
@fullybaked haha编辑了我的答案,使它更清晰;)
<?php
  require_once('check.php');
  CheckAccess();
?>