我有一个 php 页面,其中显示了几个链接作为选项(即一个简单的菜单),但我需要验证登录用户和/或其分配的组,以查看他们是否有权访问每个选项。
让我用一个例子来解释。
我的“menu.php”页面有一个简单的 html 链接列表,例如:
option1.php
option2.php
option3.php
...
optionN.php
[我正在排除 html 代码,仅显示逻辑]
现在,每个选项应该只对某些组和/或用户可见。例如,组 1 可以访问选项 1,2,5,组 2 可以访问选项 2,4,5,组 3 可以访问选项 1 和 6,用户 A 可以访问选项 3,4,用户 B 可以访问选项 4,6,依此类推.
我只需要对单个用户或他们的组授予访问权限,换句话说,它是一个 OR 条件,无论是组还是用户,而不是两者。
我通过 $_SESSION 变量接收用户和组,所以我可以直接验证它。
现在,构建脚本以验证每个选项权限的最佳方法是什么?
我目前没有选择使用数据库来存储权限,所以我需要在代码中完成所有操作(硬编码)。
例如,我的一个想法是为每个选项创建几个数组,并在每个数组中存储每个组和有权访问它的用户的 ID。
$option1_Users[1,2,4,5];
$option1_Groups[3,5];
$option2_Users[2,5,7];
$option2_Groups[1,6,12];
...
...等等,然后只需将每个链接嵌套一个验证,例如:
if( in_array($logged_user,$option1_Users) || in_array($logged_group,$option1_Groups){
echo option1.php; //the html for the option 1 link
}
这样,每次要回显一个选项时,我都会验证用户/组是否可以访问它。
虽然它会以这种方式工作,但我认为它非常脏并且有很多数组(每个选项两次)。有没有更好的方法来完成这一切?有没有“通用”或标准的方法来实现它?除了数组和普通 if 之外,我还能使用什么?
注意: - 每个用户可以属于多个组,每个组可以有多个用户(多对多关系),但这无关紧要,因为我可以在脚本中验证任何一个。
- 主“menu.php”已经有数据库验证可以访问它,基于用户的组(如果组没有权限,用户根本无法进入菜单),但目前它只允许访问菜单本身,但在其中,我需要再次验证用户/组可以看到哪些特定选项。
-我目前需要对解决方案进行硬编码(我知道,很脏,但我需要脚本自行验证所有内容,而不是依赖于数据库来了解权限),但是如果您有一个涉及数据库并将权限存储在那里的解决方案,随意提及它,以及如何实现它。
谢谢。