0

私は趣味で cms を開発していますが、何かに引っかかってしまいました....私の mysql データベースには、管理者、通常のユーザー、退役軍人、プレミアムなど、さまざまなクラスのユーザーがいます.....作成する方法はありますか?各ユーザークラスの設定を含むphpファイルは?そして、関数または何かを使用して、特定のユーザーが...たとえばページを作成する権利を持っているかどうかを確認します....

今のところ、セッションでユーザーの権利を確認しています...

  If($_SESSION['user_type']=='Admin'||$_SESSION['user_type']=='premium'){
 //do stuff
 }else if()......... {
  // ..............
  }

しかし、私はそのようなものが欲しい

check_user_right(user_name);
if ($can_create_page) == true{
 do......}else{....}
4

1 に答える 1

2

まず、ユーザー情報をデータベースに保存する必要があることを知っておく必要があります。次に、誰かがログインしてログインを確認すると、そのユーザー ID をセッションに保存し、他のすべてのユーザー情報 ( など) を取得するにはuser_type、その ID に基づいてデータベースにクエリを実行します。まだそれを行っているかどうかはわかりませんが、そうでない場合は行う必要があります。

ユーザー権限に関しては、2 つのオプションがあります。

OOP の方法

これは私が推奨するものです。Userデータベースからユーザーを取得するためのすべてのロジックをカプセル化するクラスを作成し、その後、そのユーザーが特定の権限を持っているかどうかを確認する必要があります。

class User {
    protected static $_rights = array(
        'admin'=>array(
            'create_page','remove_page', etc...
        )
    );
    public static retrieve($id) {
        // Call to your database or persistent storage to retrieve user info based on id
        return new static($retrieved_user_data);
    }

    public function has_right($right) {
        return in_array($right, static::$_rights[$this->user_type]);
    }
}

非 OOP の方法

これははるかに低レベルであり、当面はあなたにとってより良いものになるかもしれません. 基本的に、ユーザー レベルごとに権利の配列を作成し、それらをチェックするために使用する関数と同じファイルに保存します。次に、この関数を使用する予定のすべてのページに含める必要があります。

たとえば、関数を というファイルに入れるとfunctions.php、次のようになります。

$user_rights = array(
    'admin'=>array('create_page','remove_page','edit_user',...),
    'veteran'=>array('ban_user','edit_page'),
    // Other rights here
);
function has_right($user_id, $right) {
    global $user_rights;
    // Retrieve information from persistent storage about the user
    // which I'm assuming you will store in $user_info
    return in_array($right, $user_rights[$user_info['user_type']]);
}

次に、ユーザー権限を確認したい他のファイルにこのファイルを含める必要があります。必要なのは、ユーザー ID (ログイン後にセッションに保存されます) とユーザーの種類だけです。これは、データベースなどから取得できます。永続ストレージ。

于 2013-05-05T08:47:11.487 に答える