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

时间:2013-05-03 10:44:26

标签: php mysql session

我的数据库中有一个用户表,每个用户都有一个auth_level(1-3)。在我的网站上,我有一个用于添加/删除新用户帐户的管理页面,我想限制只有具有3级身份验证级别的用户才能访问此页面。 我一直试图让这个与会议一起工作,但我被困住了。希望有人可以帮助我。

以下是我限制访问的代码。不知道我哪里出错了。 check.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");
    }
}
?>

如果我以身份验证级别为1或3的用户身份登录,则会显示相同的空白页。

4 个答案:

答案 0 :(得分:3)

我想你永远不会打电话给CheckAccess()。调用它可能会修复你的错误。

答案 1 :(得分:1)

执行以下操作完全有效,您的功能正在执行。

if (this=that) { /*do multiple*/ } else //do single;

但是,您似乎没有调用此功能?试试这个:

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

答案 2 :(得分:0)

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

}之后和$result =

之前添加if

应该达到你想要的一个稍微替代的版本

<?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');
}

答案 3 :(得分:-1)

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

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

<?php

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


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

到这个

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

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

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

因为标题需要先发送,然后才能发送内容:)