用于通过权限限制成员访问的PHP代码

时间:2009-12-27 20:10:21

标签: php permissions file-access

我正在使用PHP构建一个网站& MySQL的。它具有前端和后端功能。只有管​​理员才能通过用户名和密码输入后端。现在,如果管理员想要将其他子管理员添加到网站,他可以这样做。通过这种方法,子管理员将能够登录并执行原始管理员能够执行的所有操作。

我想做什么:

我想根据自己的选择限制子管理员的访问权限,并为他们分配权限,以便他们只能访问管理面板的某些部分。

我正在谈论的特色示例:

请注意,原始管理员可以访问以下链接。 1.添加文章2.批准文章3.删除文章4.添加用户5.编辑用户6.删除用户7.更改站点设置8.查看财务信息9.邮件中心

如果我没有设置任何权限,那么所有子管理员都可以访问以上所有链接。假设我创建了2个子管理员'David'和'Bob'。

现在我希望David只访问后端的以下所需部分:

  1. 添加文章,4。添加用户,7。更改网站设置
  2. 现在我希望Bob只能访问后端的以下所需部分:

    1. 添加文章,2。批准文章,3。删除文章,4。添加用户,9。邮件中心
    2. 作为原始管理员,我应该能够访问所有部分,而David和Bob应该能够看到&仅访问已分配给它们的链接和页面(或功能)。我不知道如何做到这一点。另外,例如,如果我想限制子管理员只访问“添加文章”页面,那么我还希望他访问它发布到的页面(考虑到输入在添加文章页面上)add_articles_next.php页。另请注意,“add_articles_next.php页面”不会出现在链接列表中的任何位置。它只是从子管理员可以访问的页面发布到的页面。

      我明白除非我明确指出,否则系统无法知道,这是我的问题。怎么做?我不是面向对象的人,因此使用函数的PHP代码对我来说非常好。

      我正在谈论的其他实用内容:

      我在研究这个主题时遇到了一个功能。 Click here to visit it。这看起来有些类似。

      提前感谢大家提供的任何代码。

1 个答案:

答案 0 :(得分:4)

之前有人问过这个问题。要搜索的关键字是访问控制列表(ACL)。 ACL最着名的PHP解决方案之一是Zend_ACL。它非常通用,应该可以根据您的需要进行自定义。

编辑您对面向对象库的评论:

找到一个非面向对象的ACL解决方案将非常非常困难,因为市场上很少有很好的PHP(Zend是我认识的唯一一个,实际上)并且大多数现代应用程序正在采用或多或少面向对象的方法。但不要担心,请查看教程。我认为在面向功能的应用程序中使用Zend_Acl没有问题。你需要通过OOP与ACL交谈,但这很容易。我认为你不必更改你的应用程序。试一试,一般来说,基本的OOP并不难学。只需在PHP手册中给出“类和对象”一章,即可。