我有一個顯示幾個鏈接作爲選項(即一個簡單的菜單)的PHP頁面,但我需要驗證登錄用戶和/或其分配的組,以查看他們是否有權訪問每個選項。PHP:如何驗證菜單中選項的訪問取決於用戶/組?
讓我來舉個例子來解釋。
我的 「menu.php」 頁面有鏈接一個簡單的HTML上市,如:
option1.php
option2.php
option3.php
...
optionN.php
[我正在避免的HTML代碼,只是顯示的邏輯]
現在,每個選項應只對某些組和/或用戶可見。 例如,組1可以訪問選項1,2,5,組2到選項2,4,5,組3到選項1和6,用戶A到選項3,4,用戶B到選項4,6等等上。
我只需要有權爲單個用戶或他們的組提供訪問,即換句話說,它是一個OR條件,無論是組還是用戶,都不是兩個。
我通過$ _SESSION變量接收用戶和組,所以我可以直接驗證它。
現在,什麼是最好的方式來構建腳本來驗證每個選項permision?
我目前沒有使用數據庫來存儲權限的選項,所以我需要在代碼中完成所有操作(硬編碼)。
我有一個想法是爲每個選項創建幾個數組,並在每個數組中存儲每個組和有權訪問它的用戶的ID。
$option1_Users[1,2,4,5];
$option1_Groups[3,5];
$option2_Users[2,5,7];
$option2_Groups[1,6,12];
...
...等等,然後就巢驗證每一個環節,是這樣的:
if(in_array($logged_user,$option1_Users) || in_array($logged_group,$option1_Groups){
echo option1.php; //the html for the option 1 link
}
這樣一來,每一個選項是要時間來呼應,我驗證是否用戶/組可以訪問它。
雖然它會這樣工作,但我認爲它很髒並且有很多數組(每個選項有兩次)。有沒有更好的方法來做到這一點?是否有「共同」或標準的方式來實現它?除了數組和我可以使用的普通ifs之外,還有什麼?
說明: - 每個用戶可以屬於幾個組,每個組可以有多個用戶(多對多關係),但這是無關緊要的,因爲我可以在腳本中進行驗證。
- 主要的「menu.php」已經通過數據庫驗證來訪問它,基於用戶組(如果該組沒有權限,用戶根本無法進入菜單),但目前它只能用於訪問菜單本身,但在其中,我需要再次驗證用戶/組可以看到的特定選項。我當前需要硬編碼的解決方案(我知道,髒,但我需要腳本來驗證所有的東西,而不依賴於數據庫來知道權限),但是如果你有一個涉及數據庫的解決方案和在那裏存儲權限,隨意提及它,以及如何實現它。
謝謝。
那麼,在foreach部分長相甜美,但問題是,我的選擇鏈接居然有名稱不同的只是「選項」(或任何其他前綴)+一個數字。所以我必須有_another_數組或兩個來指定鏈接的名稱(用戶將看到的html)和鏈接本身(.php文件的名稱)。無論如何,好思想。這是您的第一個upvote =) – DiegoDD
感謝您的投票。我認爲你仍然可以通過爲鏈接名稱和鏈接文本添加條目來實現。 – stanlest