PHP根据用户权限显示链接?

时间:2012-11-16 22:01:17

标签: php permissions hyperlink

我正在尝试显示或不显示基于用户访问级别的链接。链接将根据用户可能位于的站点部分而有所不同。链接也可能不在一个菜单中。他们很可能会在页面的不同位置。

目前我有一个包含用户,组和章节的数据库表。主菜单是从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语句来泛滥页面。此外,这似乎不是最好的处理方式,因为它需要人工解释访问级别代表什么。

对此有任何帮助表示赞赏。我可能会走向完全错误的方向吗?

3 个答案:

答案 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,所以如果有人直接进入页面就会被踢掉..

希望它指出你正确的方向。 ;)