PHP-限制登录用户访问管理页面
我的数据库中有一个用户表,每个用户都有一个身份验证级别(1-3)。在我的网站上,我有一个用于添加/删除新用户帐户的管理页面,我想将此页面的访问权限限制为只有身份验证级别为3的用户。 我一直在尝试让它与会话一起工作,但我被卡住了。希望有人能帮我 这是我限制访问的代码。我不知道我哪里出错了。 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
<?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();
?>
Addini\u集(“显示错误”,1)代码>在您的页面顶部。我想知道如果我以未经授权的用户身份直接加载“admin.php”,会发生什么。@Rikesh:他不是。当没有{
在else
之后,它将执行找到的第一行代码。您应该决定:它是返回true
用户是否可以访问,还是将用户发送到新页面?您确定他的CheckAccess函数不包括if吗?注意关闭}
在else头之后…
否。当else
之后没有{
时,它将执行找到的第一行代码,并且不需要}
成功!非常感谢…现在开始工作。我没有调用函数!D'ohI抱歉?什么输出?除非你在check.php中假设了什么,移动@fullybaked haha编辑了我的答案,使它更清晰;)
<?php
require_once('check.php');
CheckAccess();
?>