2011-09-20 128 views
-1

我已經有一個使用php和mysql使用會話的現有登錄系統。我想我不需要在這裏發佈代碼。不同用戶級別的php mysql登錄系統

我想添加一個用戶級別的功能,其中它限制了可以由註冊用戶根據他的訪問級別查看的頁面。示例用戶級別1只能訪問第1-5頁,而用戶級別2可以訪問第1-10頁等等。

我在我的成員表上添加了一個userlevel列。我不知道下一步是什麼。

什麼特定的功能/代碼可以用來設置頁面上的用戶級別限制?

我試着在網上搜索例子,但找不到任何好的例子。

請幫助

回答

1

你沒有給我太多有關發生了什麼的信息(也許這就是爲什麼你的用戶名是PHPNewbie)。

已經與我的老用戶系統做的是我有一個單獨的表稱爲。在組表中,它具有列中不同特權的布爾值(例如canComment)。無論何時我需要驗證用戶是否可以執行某個操作,我只需在操作列中檢查一個真實值。

您可以通過擁有更廣泛的用戶系統來實現此目的,其中整數userLevel可以指示用戶的組(0-根,1-基本等)。看起來你想要的是一個頁面限制系統。我可以建議你使用檢索的UserLevel作爲這樣一個switch語句 -

switch(userLevel) { //Where userLevel is an int retrieved from the session/database 
case 0: 
    echo $page; 
break; 

case 1: 
    echo "You cannot access this resource..."; 
break; 
0

你可以做一個函數getUserLevel(用戶ID)返回用戶的數據庫lavel,並檢查你想要的頁面那個水平(如果(getUserLevel($ _ SESSION [「USER_ID」 ])< 5){display something} else {display something else})etc ...

+0

你可以給我一個具體的例子嗎? :-) – PHPNewbie

+0

這是微不足道的。就像這樣:'function getUserLevel($ user_id) { \t $ result = mysql_query('SELECT user_level FROM table WHERE id =「{$ user_id}」'); \t如果($結果){ \t \t而($行= mysql_fetch_assoc($結果)){ \t \t返回$行[ 'user_level']; \t} \t return null; }' – radonys

0

你在說什麼被稱爲一個訪問控制列表(ACL)和是已經發明瞭許多次輪。

在互聯網上有幾個教程可用,例如這個http://dev.juokaz.com/php/acl-made-easy-part-1。快速搜索將找到您可能更喜歡的其他人。

預製的解決方案可能適合您的需求,我發現這一個http://pear.php.net/package/LiveUser/redirected,再次有其他人可用。

你想要避免的是訪問控制在你的代碼周圍,保持良好的實踐並保持封裝,以便你可以在一個地方進行更改。