我在PHP中有几个页面,基本上一个是设置会话的登录(包括用户权限)
所以在我的数据库中,我有列用户名,密码,用户,管理员,特殊,并在会话中将它们全部设置
在每个页面上我都有以下代码:
if($_SESSION["special"] != 'yes')
{
echo 'Access Denied!';
exit();
}
所以它会阻止一切运行。
我的所有“管理员”用户都没有“特殊”用户级别,因为他们应该覆盖此权限并且可以访问所有内容,但由于管理员用户没有“特殊”用户权限,上面的代码会运行,阻止用户查看该页面。
如何让'admin'用户完全覆盖这个?
答案 0 :(得分:2)
如果我理解正确,您会遇到以下情况:普通用户可能会或可能不会special == yes
,因此可以获得特殊访问权限。管理员有special != yes
但仍应获得访问权限吗?
if ($_SESSION['user'] == 'yes' && $_SESSION['special'] != 'yes') {
echo 'Access Denied!';
exit;
}
现在,这仅包括用户并且没有特殊访问权限的人员。具有特殊功能的管理员和用户可以访问该网站,就像没有检查过一样。
或者你可以写
if ($_SESSION['admin'] != 'yes' && $_SESSION['special'] != 'yes') {
echo 'Access Denied!';
exit;
}
答案 1 :(得分:0)
您的“管理员”用户必须将其他参数定义为管理员,因此请检查:
if(($_SESSION["special"] != 'yes')||(!IS_ADMIN))
{
echo 'Access Denied!';
exit();
}