关于PHP权限设计解决办法

php中文网
发布: 2016-06-13 13:33:27
原创
1037人浏览过

关于PHP权限设计
描述:想做一个PHP的权限菜单、根据不同的用户登录从数据库中循环出不同的主菜单及子菜单
数据库结构如下
cfg_useraccount \存储用户信息
cfg_role \存储角色信息
cfg_resource \存储菜单信息
cfg_permission \角色拥有的权限

现在是可以通过登录时获取的用户ID、取到该用户所拥有的主菜单、但是如果取到该用户所拥有的子菜单呢、一般对于子菜单应该如何处理?暂时没有啥头绪
\select a.RoleID,b.ResourceName,b.URL from cfg_permission a join cfg_resource b on a.ResourceID=b.ResourceID where RoleID in (select RoleID from cfg_useraccount where username='admin');



PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
//数据库CIM
create database cim default charset=utf8;

//用户表
create table cfg_UserAccount
(
   ID int(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
   UserName    varchar(20),
   PassWord    varchar(20),
   MobilePhone varchar(20),
   CreateTM    varchar(20),
   UpdateTM    varchar(20),
   RoleID     int(4)
) DEFAULT CHARSET=UTF8;
//数据格式及插入测试数据
insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('admin','111111','15957118564','2011-12-30','10');
insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('刘成','111111','15957118564','2011-12-30','20');
insert into cfg_UserAccount (UserName,PassWord,MobilePhone,CreateTM,RoleID) values('邹琼芳','111111','13735862872','2011-12-30','30');


//角色表
create table cfg_Role
(
   RoleID int(4),
   RoleName varchar(20),
   Remark    varchar(20)
)DEFAULT CHARSET=UTF8;
//插入测试数据
insert into cfg_Role(RoleID,RoleName,Remark) values('10','超级管理员','具有系统所有权限');
insert into cfg_Role(RoleID,RoleName,Remark) values ('20','技术部','具有客服管理等权限');
insert into cfg_Role(RoleID,RoleName,Remark) values('30','部门经理','具有修改资料的权限');
insert into cfg_Role(RoleID,RoleName,Remark) values('40','财务经理','统计考勤及奖金');

 
//资源表
create table cfg_Resource
(
ResourceID     int(4),
ResourceName   varchar(20),
Remark         varchar(20),
URL            varchar(100),
);

insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('100','客服管理','对日常客服记录进行管理','SeviceManager.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('101','客服子菜单1','对日常客服记录进行管理','SeviceManager.php?action=add');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('102','客服子菜单2','对日常客服记录进行管理','SeviceManager.php?action=del');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('200','会员管理','会员新增和查询','MemberService.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('300','查询管理','查询管理','Search.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('400','回访管理','对客服记录进行回访','Visit.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('500','知识库','产品FAQ','Knowledge.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('600','数据管理','数据备份统计相关','Backup.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('700','硬件返修','硬件产品返修','Repair.php');
insert into cfg_Resource (ResourceID,ResourceName,Remark,URL) values('800','系统管理','系统管理相关','System.php');


create table cfg_Permission
(
RoleID int(4),
ResourceID int(4)
)

//权限表
insert into cfg_Permission (RoleID,ResourceID) values('10','100');
insert into cfg_Permission (RoleID,ResourceID) values('10','200');
insert into cfg_Permission (RoleID,ResourceID) values('10','300');
insert into cfg_Permission (RoleID,ResourceID) values('10','400');
insert into cfg_Permission (RoleID,ResourceID) values('10','500');
insert into cfg_Permission (RoleID,ResourceID) values('10','600');
insert into cfg_Permission (RoleID,ResourceID) values('10','700');
insert into cfg_Permission (RoleID,ResourceID) values('10','800');


登录后复制



------解决方案--------------------
一些建议

1.表似乎可以合并成一个
2.关于权限,你可以在读取权限后赋值给session
然后根据权限include 菜单/子菜单内容

权限判断当然是要用到if 的,这是应该让php来做的,而不是让mysql来"读取"的.

将权限判断写成一个类,然后include不同的文件就好了
------解决方案--------------------
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号