首页 / PHP / 关于PHP权限设计解决办法
关于PHP权限设计解决办法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于PHP权限设计解决办法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3926字,纯文字阅读大概需要6分钟。
内容图文
关于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
//数据库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权限设计解决办法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。