不同组的数据库设计访问和显示结果

时间:2016-04-07 11:11:48

标签: php mysql

我想让不同的角色访问管理信息中心。现在它们是superadminadmin ..稍后我会再增加2个,但现在只是这两个。目前superadmin具有创建新管理员的所有权限。管理员将有权在以后创建普通用户,但现在superadmin和admin之间的差异只是这个。我在PHP中相当新,之前在这里发帖我发现很少这样的项目,但是它们非常先进,我不能很好地理解它们,因为它们采用OOP方法。

所以我在数据库中创建了几个表:usersaction_permissionsuser_permissions

users为用户保存数据..没什么特别的:

+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| user_id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| user_username | varchar(35) | NO   |     | NULL    |                |
| user_password | char(64)    | NO   |     | NULL    |                |
| user_email    | varchar(55) | NO   |     | NULL    |                |
| user_role     | int(11)     | NO   |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+

action_permission按住gp_name:Creat(1),Read(2),Update(4),Delete(8)

+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| gpid          | int(11)     | NO   | PRI | NULL    | auto_increment |
| gp_name       | varchar(10) | NO   |     | NULL    |                |
| gp_permission | int(4)      | NO   |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+

表格user_permissions暂停role_id.user_permissions = users.user_role。在permission_namespace中,我存储了SuperAdmin或Admin ..而permission_action是gp_permission

+----------------------+-------------+------+-----+---------+----------------+
| Field                | Type        | Null | Key | Default | Extra          |
+----------------------+-------------+------+-----+---------+----------------+
| permission_id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| role_id              | int(11)     | NO   |     | NULL    |                |
| permission_namespace | varchar(50) | NO   |     | NULL    |                |
| permission_action    | int(4)      | NO   |     | NULL    |                |
+----------------------+-------------+------+-----+---------+----------------+

到目前为止一切顺利。我已成功使用superadmin和admin登录,并使用此查询来查看我是否正确permission_action

$value = $pdo->prepare("SELECT *
                            FROM users
                            LEFT JOIN user_permissions ON users.user_role = user_permissions.role_id
                            WHERE user_role = ?"); 
$value->bindValue(1, $_SESSION['user_role'], PDO::PARAM_INT);
$value->execute();
foreach($value as $row)
{ 
       ....
}

现在我几乎没有问题:

1)由于这不是一个复杂的系统,这种方法是否可接受,即它是否正确?

2)当用户登录系统时如何显示只有他的角色可以看到的东西,你能给我一个简单的例子吗?我是否需要在页面上有多个if{}else{}条件,或者我可以拥有一些课程页面并包含?

示例:

具有admin登录权限的用户。然后,他必须只能看到普通用户的CRUD。

拥有superadmin权限的用户登录。他将看到管理员和普通用户的CRUD。

P.S。很抱歉很长的帖子,但我差不多完成了这个......只需要一些帮助即可完成它。

0 个答案:

没有答案