首先,你應該知道,你應該在數據庫中存儲的用戶信息。然後,當有人登錄並驗證登錄名時,可以將他或她的用戶ID存儲在會話中,然後獲取所有其他用戶信息,如user_type
,則將根據該ID查詢數據庫。不知道你是否還在這樣做,但如果你不是這樣,你應該是。
就用戶權限而言,您有兩種選擇。
的OOP方式
這是一個我建議。它需要創建一個User
類,它封裝了從數據庫中檢索用戶的所有邏輯,並隨後檢查該用戶是否具有特定的權限。
class User {
protected static $_rights = array(
'admin'=>array(
'create_page','remove_page', etc...
)
);
public static retrieve($id) {
// Call to your database or persistent storage to retrieve user info based on id
return new static($retrieved_user_data);
}
public function has_right($right) {
return in_array($right, static::$_rights[$this->user_type]);
}
}
非OOP方式
這是級別低得多,並在此期間可以對你更好。基本上,您會爲每個用戶級別創建一組權限,並將其存儲在與用於檢查它們的函數相同的文件中。然後,該功能必須反過來被包含在你打算使用它的每一頁上。
例如,說你把函數在一個名爲functions.php
文件,它看起來像這樣:
$user_rights = array(
'admin'=>array('create_page','remove_page','edit_user',...),
'veteran'=>array('ban_user','edit_page'),
// Other rights here
);
function has_right($user_id, $right) {
global $user_rights;
// Retrieve information from persistent storage about the user
// which I'm assuming you will store in $user_info
return in_array($right, $user_rights[$user_info['user_type']]);
}
那麼你應該包含您要檢查用戶權限的任何其他文件這個文件,然後您所需要的只是用戶標識(登錄後存儲在會話中)和用戶類型,您可以從數據庫或其他持久性存儲獲取該用戶標識。
對不起,我不知道如何使用它....你能給我一個更具體的例子嗎? :) – 2013-05-05 12:24:36
我正在編輯我的答案來幫助你。 – jraede 2013-05-05 17:32:34
非常感謝你,但我仍然在兩種情況下都有同樣的錯誤:警告:in_array()期望參數2是數組,在C:\ xampp \ htdocs \ site \ test \ drepturi.php中給出null在線10 – 2013-05-06 09:46:33