管理不同的用户组以查看页面

时间:2012-12-04 12:50:16

标签: php authentication login

在我的应用程序中,有不同的用户组,如学生,教师,管理员,校长等,可以登录我的应用程序。而且我有一个像student_add.php这样的php,这是一个学生管理员,所以只有管理员可以查看该页面。

现在我要设置文件“students_add.php”只能由 admin 访问。为此,我可以创建一个像$_SESSION['user_type'] = 'A'这样的会话变量,然后通过在用户登录我的应用程序时检查会话变量,我可以使用header()和<来重定向或设置404错误强> htaccess的即可。但我不想对我的应用程序中的每个文件使用此检查机制。

所以,我想要一个简单的解决方案来解决我的问题,还请让我知道有哪些方法/逻辑来控制PHP中不同用户组访问的页面。

3 个答案:

答案 0 :(得分:1)

你基本上必须检查每个脚本,因为别无他法。唯一的方法是你如何做到这一点。最好的方法是将检查代码移动到单独的脚本中,然后将其包含在每个其他脚本的开头

require_once('my_checking_script.php`);

这是最干净的方法。或者,如果你有真的,非常大量的脚本,你可以使用php.ini的{​​{1}}指令。

答案 1 :(得分:0)

这不是一个魔术。

<强> admin.php的

if(not admin) logout
...

<强> user.php的

if(not user or admin) logout
...

答案 2 :(得分:0)

我非常确定您每次需要检查时都必须检查用户凭据。也许OOP会因为重复自己而感到痛苦,但是,每当用户做某事时,你需要以某种方式区分用户组及其访问权限。

我目前在管理用户组权限时使用数字用户级别。数字越大,用户拥有的权利越多。因此,在单个文件中可以有不同类型的代码块(或者只有一些用户可以访问的不同类型的文件)。一个简单的例子:

<?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)
}
?>

除了user_level之外,您当然可以使用is_admin等特殊属性。但是您必须将其写下来。计算机/程序最后一次执行任何操作时,如果没有您(或其他人)首先遇到编程允许操作(和限制)的麻烦,那么他们希望他们做什么?