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

标签 php permissions file-access

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

我想做什么:

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

我正在谈论的功能示例:

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

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

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

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

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

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

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

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

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

我在研究这个主题时发现了一个功能。 Click here to visit it 。这看起来有些相似的功能。

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

最佳答案

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

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

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

关于PHP代码通过权限限制成员访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1966904/

相关文章:

security - 如何为我的 symfony2 网站实现权限角色/组系统

.net - 访问串行端口需要哪些 ASP.NET 权限?

windows - 检查目录的正确方法可用于写入

java - 在 JAR 文件内部和外部定位文件的标准/统一方法?

javascript - 无法使用 AJAX 获取选择值

php - 删除最后一个数组值? php

MYSQL 存储过程

android - Android 上的 UnauthorizedAccessException

php - Laravel 5 中的 Multi-Tenancy 子域

php - 无法在 API 实现中使用过滤器和维度