MYSQL PHP用户权限

MYSQL PHP用户权限,php,mysql,Php,Mysql,我正在为我们公司制作后端。我想基本上有3个用户组。。。管理员可以访问所有功能,管理员可以访问除管理员任务以外的所有任务,用户的功能最有限 我在研究MySQL是如何处理用户的,它是一个非常好的系统,但在编写类似的代码时似乎有相当大的开销 我想知道是否还有其他人有建议。我想让集团管理充满活力,但我想知道这是否值得,因为我们是一家小公司 我将创建一个类似这样的表。假设GroupID 1是管理员,GroupID 2是用户: PRIVILEGE GroupID Grant USER_ADD

我正在为我们公司制作后端。我想基本上有3个用户组。。。管理员可以访问所有功能,管理员可以访问除管理员任务以外的所有任务,用户的功能最有限

我在研究MySQL是如何处理用户的,它是一个非常好的系统,但在编写类似的代码时似乎有相当大的开销

我想知道是否还有其他人有建议。我想让集团管理充满活力,但我想知道这是否值得,因为我们是一家小公司

我将创建一个类似这样的表。假设GroupID 1是管理员,GroupID 2是用户:

PRIVILEGE     GroupID    Grant
USER_ADD      1          "Y"
USER_ADD      2          "N"
EDIT_LISTING  1          "Y"
EDIT_LISTING  2          "Y"
等等。。。 以下是我正在考虑的3个选项:

构建一个用户类,用户在其中登录、实例化类并设置属性。我不喜欢这样,因为每次用户移动时都必须创建一个新实例 将查询结果从privileges中选择*,其中GroupID=:userGroup保存到全局数组 将值保留在$\u会话变量中。这足够安全使用吗?
除非你想从中学习,否则我不会尝试重新发明轮子。您有没有看过,它有自己的and-模块?

这就是我处理这种情况的方式

创建包含所有用户信息(包括权限/组)的用户类 当用户登录时,将其用户对象另存为会话变量,并在整个站点中引用该会话变量。 创建页面,使其仅显示当前用户权限级别允许的选项/功能。 例如:

<?php
    $Me = new User(user parameters);
    $_SESSION['currentUser'] = $Me;

    ...

    if($_SESSION['currentUser']->GetValue(Permission) == 'Admin')
    {
        echo 'You're an admin';
    }
?>

这样,除非用户更改/更新其信息,否则您只能执行一次用户查询。您也不必进行与权限相关的查询,这样可以节省服务器开销和时间。

当我这样做时,我会在会话中使用用户id\name来保持用户级别。@Dagon,谢谢,如果zend的想法不奏效,我可能会这样做。我更倾向于CodeIgnitor,但我在这个项目中走得很远,我想知道有多少重新做的网站,我将不得不这样做。这个项目的结果比我们预期的更大。我同意你重新发明轮子的观点,但你不必重写所有的东西。Zend Framework模块只是松散耦合的,您可以只使用您真正需要的两个模块,并保留当前主页的其余部分。是的,我刚刚查看了他们的文档。我可能会尝试实现它。。我担心我必须在Zend下运行整个程序,但看起来并不像我想象的那么可怕。我开始构建一个类,但不知道如何在每次有人做某件事时都不询问DB就让它工作。感谢我忽略了这个显而易见的想法!