2011-06-21 91 views
0

我正在使用下面的代碼來檢查登錄級別 - 創建必須具有某個訪問級別才能訪問的頁面的最優雅方式是什麼?PHP函數創建user_level特定頁面

function check_login($level) { 

    $username_s = mysql_real_escape_string($_SESSION['username']); 

    $sql = "SELECT user_level, restricted FROM login_users WHERE username = '$username_s'"; 
    $result = mysql_query($sql); 
    $row = mysql_fetch_array($result); 

    $user_level = $row['user_level']; 
    $restricted = $row['restricted']; 

    $sql = "SELECT level_disabled FROM login_levels WHERE level_level = '$user_level'"; 
    $result = mysql_query($sql); 
    $row2 = mysql_fetch_array($result); 

    $disabled = $row['level_disabled']; 

    if($disabled != 0) { include('disabled.php'); exit(); 

    } elseif($restricted != 0) { include('disabled.php'); exit(); 

    } elseif($user_level <= $level) { // User has authority to view this page.  

    } else { include('user_level.php'); exit(); 

    } 

} 
+1

您可能會發現本教程很有用:[Flat PHP遇到Symfony時](http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html)它顯示瞭如何分離應用程序的各個部分併爲頁面提供訪問控制。 – hakre

回答

2

就編碼的簡易性而言,使用mod_rewrite將所有頁面請求發送回從數據庫中提取內容的單個腳本。數據庫可以將內容與查看所述內容所需的用戶級別相關聯,並且腳本可以執行它。

0

您正在尋找名爲ACL的東西,並且有很多方法可以在PHP和Apache中實現它。對於PHP,Zend_Acl似乎是更好的之一。就我個人而言,我犯了重新發明輪子的罪行,但迄今爲止它一直在發揮作用。