2011-06-21 8 views
0

ログインレベルを確認する以下のコードを使用しています - アクセスする特定のアクセスレベルを持つページを作成する最もエレガントな方法は何でしょうか?user_level固有のページを作成するPHP関数

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

このチュートリアルは便利です:[フラット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が優れたもののようです。個人的には、私はホイールを再発明したことを認めていますが、それは今のところこれまでのところうまくいきました。