我有一個「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