2012-12-11 63 views
0

我試圖在我的網站上創建模塊化管理功能,並且我有幾個關於如何輕鬆查詢誰擁有管理員權限到特定頁面的問題(我希望如此我可以將管理員權限更改爲網站的特定部分,以免給任何一個人太多的控制權)。我最初考慮的是白名單,但是決定處理它會變得非常難看,於是我開始考慮構建一個SQL表,該表包含成員ID號和他們有管理控制權的頁面(也許到了什麼程度他們在該頁面上擁有管理權限)。php創建模塊化管理功能

爲了做到這一點,我想到了3列,第一個是ID,第二個是用逗號隔開的頁面,第三個是帶有標記位的特定管理功能的字節。當用戶登錄時,它會將這些信息存儲在一個會話中,他們擁有管理權限的頁面用於「快速訪問」,以便某些內容出現在頁面上(例如創建新消息,修改帖子,刪除帖子等...)

這是一個可行的/有效的方式嗎?有沒有關於如何給予和檢查管理權限的標準?

我在尋找,我在考慮對每一個動作做一個檢查/查找比在一個會話中保存信息要好,但是前提聲音的其餘部分呢?

+0

你在建什麼管理員?你在使用一些框架嗎?許多框架都有訪問控制插件(稱爲模塊,火花,擴展等),它們適合您正在尋找的內容。 –

+0

我從頭開始構建它。這是一種學習經驗,所以我想從絕對沒有建立它(我只是使用PHP和MySQL) –

回答

2

這是我們幾年前的課堂活動。
使用DB管理的用戶

Table user:: 
    username  password  Role 
    1    123   REGULAR 
    2    123   MOD 
    3    123   ADMIN 

Table Role:: 
    Role-Name  Permissions 
    ADMIN   WRITE,DELETE, APPEND 
    MOD    WRITE,APPEND 
    REGULAR  WRITE 

角色再有就是這是通用於所有的讀取權限。有一個特殊的訪客用戶只能閱讀。我們使用全文搜索來檢查用戶角色是否具有博客中的特定權限。

例如,如果用戶是管理員,他可以看到他面板上的所有三個按鈕。這是使用PHP完成的,並且在拆分,後,權限被保存在數組中。

$sql = "Select Permissions from ROLE where Role-name = (select ROLE from user where username = '1')" 
$permission[] = split(mysql_query($sql), ','); 

<div id = command_bar> 
     <a> ... 
      some common buttons..</a> 
     foreach values in $permission[] 
      { <a href='url?option=permission'> permission </a> } 

上面創建了類似<a href="url/?option=APPEND">APPEND</a>的東西,並賦予用戶執行角色的能力。這不是一個實際的項目,而是一個學習的課堂活動。