3

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

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

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

4

3 回答 3

1

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

require_once('my_checking_script.php`);

这是最干净的方法。或者,如果您有非常非常多的脚本,您可以使用php.ini'auto_prepend_file指令。

于 2012-12-04T13:01:26.810 回答
0

没有魔术。

管理员.php

if(not admin) logout
...

用户.php

if(not user or admin) logout
...
于 2012-12-04T13:02:12.030 回答
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等等。但你总是必须把它写下来。如果您(或其他人)第一次遇到编程允许的操作(和限制)的麻烦,计算机/程序最后一次做您希望他们做的任何事情是什么时候?

于 2012-12-04T13:13:31.243 回答