當前位置:編程學習大全網 - 源碼下載 - PHP權限分配思路

PHP權限分配思路

可以,但是這樣不便於管理,因為妳的是用戶直接與權限打交道,關於權限的思路以下有4種常見的分類,妳所說的屬於第4類,不推薦使用,推薦使用前3類(用的最多的是第3類):

1.用戶+組+角色+權限

2.用戶+組+權限

3.用戶+角色+權限

4.用戶+權限

我來舉個例子,就拿第3類來舉例:

權限:用戶操作的具體事件如:添加管理員,修改管理員,刪除管理員

角色:角色指定某壹類用戶擁有固定的權限,例如:超級管理員,管理員

用戶:最終執行權限的用戶,如:admin,admin2

那麽我們根據:用戶+角色+權限,需要3個表互相關聯(每個表的id是唯壹標識符,也就是主鍵)用戶表level字段用來存儲level表id,level表permission字段用來存儲permission表id

用戶表:php_user | 數據:id = 1, username = admin, level = 1 | ?id = 2, username = admin2, level = 2

等級表:php_level | 數據:id = 1, level_name = 超級管理員, permission = 1,2,3 | id = 2, level_name = 管理員, permission = 2

權限表:php_permission 數據:id = 1, permission_name = 添加管理員 | id = 2, permission_name = 修改管理員 | id = 3, permission_name = 刪除管理員

如果還沒看懂,請再看下面的PHP實際例子:

//?...?之前的操作,如先連接數據庫,登錄用戶

$_COOKIE['username']?=?'admin2';?//?用戶名稱

//?SQL查詢語句,查詢用戶等級,用來判斷是否可以:添加管理員

$sql?=?"SELECT?`level`?FROM?`php_user`?WHERE?`username`?=?'{$_COOKIE['username']}'?LIMIT?1;";

//?獲取查詢結果

$result?=?msyql_query($sql);

//?解析結果集

$array?=?mysql_fetch_assoc($result);

//?在創建SQL語句用來查詢等級表獲取操作權限

$sql?=?"SELECT?`permission`?FROM?`level`?WHERE?`id`?=?'{$array['level']}'?LIMIT?1;";

//?獲取查詢結果

$result?=?msyql_query($sql);

//?解析結果集

$array?=?mysql_fetch_assoc($result);

//?創建權限數組,用SESSION存儲,記得開啟SESSION,session_start();

//?使用,逗號分割權限字符,例如:1,2,3?=?array(1,?2,?3)

$_SESSION['permission']?=?explode(',',?$array['permission']);

//?最後來判斷是否有操作權限

if?(!in_array(1,?$_SESSION['permission']))?exit('無權操作!');

//?授權成功,開始:添加管理員,但是我們的用戶是admin2,他是管理員,他的權限只有:修改管理員,因此admin2無權操作:添加管理員

以上如果還是沒有明白或有任何的問題,可以隨時追問~

  • 上一篇:我想問幾個關於ERP的的問題
  • 下一篇:求用程序代碼實現向手機發送短信息的代碼,最好是c#語言.net或php的
  • copyright 2024編程學習大全網