我有一个“make-do”页面身份验证器,它定义允许哪些用户组访问该页面,但是,有些脚本允许用户在该页面比如他的用户编辑页面,但不能触及任何其他用户的编辑页面。为此,我禁止访问用户组,除非您是管理员或您目前使用的用户编辑页面是您自己的。检查是否声明了另一个函数,否则更改位置
我试着创建一个函数来做到这一点,但allowOnly usergroups函数处理惩罚而不检查其他函数是否在页面的其他地方定义。
这里的“让做”的功能,我想如何他们一个例子来工作:
public function allowOnly($officer, $administrator, $superuser)
{
$authority = 0;
if ($officer == true && $this->session->isOfficer()) {
$authority++;
}
elseif ($administrator == true & $this->session->isAdmin()) {
$authority++;
}
elseif ($superuser == true & $this->session->isSuperuser()) {
$authority++;
}
if ($authority != 0) {
return true;
}
else {
header("Location: ../incorrectRights.php");
exit;
}
}
function allowCurrentUser()
{
global $authority;
$authority++;
}
这改变了用户的位置,如果他们没有任何允许用户组的,但由于该代码在“allowCurrentUser”之前执行,它在函数有机会允许用户通过之前更改位置。
我想它是这样工作的:
<?php
include("functions.php");
$functions->allowOnly(false, false, true);
if($session->username == $allowedUserName) {
$functions->allowCurrentUser();
}
对不起,如果我没有足够的描述,或者我的代码缺乏效率,心里很不舒服,即使我已经错过了内置在PHP功能,这对我这样做!
如果之后调用“allowCurrentUser”,则标题位置仍然被执行。哪一个是我的问题。 – PwnageAtPwn 2012-07-22 09:14:02
从函数内部直接重定向页面对我来说似乎是一个很有问题的方法。你真正应该做的是如果没有权限然后返回false,并且在函数调用中,你可以相应地确定和重定向。生病发布我的答案中的例子。 – 2012-07-22 09:16:58