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

Dev*_*ner 2 php permissions file-access

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

我想做的事:

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

我正在谈论的功能示例:

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

如果我不设置任何权限,那么所有子管理员都将能够访问上述所有链接。假设我创建了 2 个子管理员“David”和“Bob”。

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

  1. 添加文章,4. 添加用户,7. 更改站点设置

现在我希望鲍勃仅访问后端的以下所需部分:

  1. 添加文章、2.批准文章、3.删除文章、4.添加用户、9.邮件中心

我,作为原始管理员,应该能够访问所有部分,而大卫和鲍勃应该能够仅查看和访问已分配给他们的链接和页面(或功能)。我不知道如何做到这一点。另外,例如,如果我想限制子管理员仅访问“添加文章”页面,那么我还希望他访问它发布到的页面(考虑到输入位于“添加文章”页面上)add_articles_next.php页。另请注意,“add_articles_next.php page”不会出现在链接列表中的任何位置。它只是从子管理员有权访问的页面发布的页面。

我知道系统无法知道这一点,除非我明确指定,但是,是的,这就是我的问题。怎么做?我不是一个面向对象的人,所以使用函数的 PHP 代码对我来说会很棒。

我正在谈论的功能的其他实例:

我在研究这个主题时发现了一个功能。点击这里访问它。这看起来有些相似的功能。

预先感谢大家提供给我的任何代码。

Pek*_*ica 5

之前在 SO 上已经多次询问过这个问题。要搜索的关键字是访问控制列表 (ACL)。Zend_ACL是最著名的 ACL PHP 解决方案之一。它非常通用,应该使您能够根据需要对其进行自定义。

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

找到一个非面向对象的 ACL 解决方案将非常非常困难,因为市场上很少有适合 PHP 的 ACL(Zend 是我所知道的唯一一个,真的),而且大多数现代应用程序都在采取更多或较少的面向对象方法。但不用担心,请查看教程。我认为在面向功能的应用程序中使用 Zend_Acl 不会有任何问题。您需要通过 OOP 与 ACL 对话,但这很简单。我认为您无需对应用程序进行太多更改。尝试一下,一般来说,基本的 OOP 并不难学。只需仔细阅读 PHP 手册中的“类和对象”一章即可。