3

私のアプリケーションでは、学生、教師、管理者、校長など、さまざまなユーザーグループがアプリケーションにログインできます。そして、私は学生マネージャーであるstudents_add.phpのようなphpを持っているので、管理者だけがそのページを見ることができます。

ここで、ファイル「students_add.php」を設定する必要があります。管理者のみがアクセスできます。そのために、そのようなセッション変数を作成できます。ユーザーがアプリにログインしているときにセッション変数を確認することで、.htaccess$_SESSION['user_type'] = 'A'を使用して404エラーをリダイレクトまたは設定できます。しかし、アプリ内のすべてのファイルにこのチェックメカニズムを使用したくありません。header()

だから、私は私の問題を解決するための簡単な解決策が欲しいです、そしてまた、PHPの異なるユーザーグループによってアクセスされているページを制御するための方法/ロジックが何であるかを教えてください。

4

3 に答える 3

1

他に方法がないため、基本的にすべてのスクリプトチェックインする必要があります。唯一の方法は、それをどのように行うかです。最善のアプローチは、チェックコードを別のスクリプトに移動し、他のすべてのスクリプトの先頭にそれを含めることです。

require_once('my_checking_script.php`);

これは最もクリーンなアプローチです。または、スクリプトの数が非常に多い場合は、のディレクティブを使用できphp.iniますauto_prepend_file

于 2012-12-04T13:01:26.810 に答える
0

魔法のトリックはありません。

admin.php

if(not admin) logout
...

user.php

if(not user or admin) logout
...
于 2012-12-04T13:02:12.030 に答える
0

ユーザーの資格情報を確認する必要があるたびに、ユーザーの資格情報を確認する必要があると確信しています。たぶん、OOPは自分自身を繰り返すことからいくらかの苦痛を取り除くことができますが、それでも、ユーザーが何かをするたびに、ユーザーグループとそのアクセス権を何らかの方法で区別する必要があります。

私は現在、ユーザーグループの権利を管理するときに数値のユーザーレベルを使用しています。数が多いほど、ユーザーが持つ権利が多くなります。したがって、1つのファイル(または一部のユーザーのみがアクセスできるさまざまな種類のファイル)内にさまざまな種類のコードブロックを含めることができます。簡単な例:

<?php
if ($user_level >= 1){
  //this is allowed fo basic users (and of course advanced users)

  if ($user_level >= 5){
    //this is allowed for advanced users (i.e. principal) but not basic users
  }

  //and again, this is allowed fo basic users (and of course advanced users)
}
?>

1つに加えてuser_level、もちろん、などのような特別な属性を持つことができますis_admin。しかし、常にそれを書き留める必要があります。あなた(または他の誰か)が最初に許可されたアクション(および制限)をプログラミングするのに苦労することなく、コンピューター/プログラムがあなたがしたいことを最後にしたのはいつですか?

于 2012-12-04T13:13:31.243 に答える