我正在尝试显示或不显示基于用户访问级别的链接。链接将根据用户可能位于的站点部分而有所不同。链接也可能不在一个菜单中。他们很可能会在页面的不同位置。
目前我有一个包含用户,组和章节的数据库表。主菜单是从Sections数据库表构建的。我想我应该创建一个Actions表并添加一个我想在动作菜单中为每个部分显示的链接。所以,我到目前为止的表格都是这样的。
Users
user_id
Groups
group_id
group_title
Sections
section_id
section_title
表我正在考虑添加。
Actions
action_id
action_title
action_group_id
action_section_id
我不确定的部分是我应该多次向Actions表中为每个允许访问的组添加相同的链接。或者,只需添加一次并执行if if group id大于,然后显示链接。
多次输入同一链接的示例。
action_id action_title action_group_id action_section_id
1 View all 1 1
2 View all 2 1
3 View all 3 1
我希望不要用一堆if / then语句来泛滥页面。此外,这似乎不是最好的处理方式,因为它需要人工解释访问级别代表什么。
对此有任何帮助表示赞赏。我可能会走向完全错误的方向吗?
答案 0 :(得分:2)
与附加表创建多对多关系,您可以在该表中为该组有权访问的每个权限插入一个条目。假设部分是您正在创建的权限,我是否正确?
Table: Group_Section (Or whatever you'd like to name it)
Group_id | Section_ID
---------+-----------
1 | 1
1 | 2
1 | 3
2 | 1
2 | 3
|
您可以看到ID = 1的组可以访问1,2,3节,而ID = 2的Group只能访问1,3。然后,您可以向所需的表添加任何权限,并通过使用外键来管理它们。
这有意义吗?
答案 1 :(得分:0)
这是一篇很好的文章,但一般会讨论http://en.wikipedia.org/wiki/Access_control enter link description here
在你的情况下,使用TheCapn
所写的内容,我只是补充说,它“最适合每个用户启动会话,并在他试图达到限制部分时检查他的访问级别。” >
答案 2 :(得分:0)
Personnaly,为了做这种事情,我在用户表中设置用户级别,在部分表中设置部分级别。 然后,您只需根据用户级别过滤该部分。
你可以通过向你的sql添加一个statemtn来实现这个目的,比如
AND section_level >= "user_level";
或者再一次,获取所有部分并使用php过滤。
foreach($section as $s){
if ($s->level >= user_level) echo $s->title
}
当然,你需要调整<。 =和>根据你系统的层次结构。
我个人使用降低等级,意思是,你越低,你就越正确。通过这种方式,您可以通过将其级别设置为99或其他内容来制作“禁止”用户。
这只适用于你的菜单,请确保你控制每个页面上的user_level,所以如果有人直接进入页面就会被踢掉..
希望它指出你正确的方向。 ;)