[转]发布一个权限管理程式

news/2024/7/7 19:31:36

// 程序下载地址: http://phpx.com/happy/attachment.php?s=&postid=694646 

这只是一个示例程序,因为时间关系,只写了一些简单的应用,其它的功能,靠你慢慢去发现。
权限是永恒的话题,如果本程序你有任何不明白的地方,都可以发信到我的邮箱 biedy_sun@eyou.com来询问
产品开发目的是用在小弟下个产品OA中,是个商业程序,先发放这个代码,希望大家喜欢。
程序并未经过DEBUG测试,如因使用程序遇到的问题,本人负责解答,但带来的一切后果,本人概不负责

本来是要提供后台实例的,但由于时间关系,就不提供了。
就麻烦你在数据库里直接操作了。或者你可以写个后台,应该是很简单的。

程序运行:
首先,得到用户所在的 groups 通过 member_groups_relation关联得到查询语句请查看perm类中的 getMemberGroups()方法;
其次得到用户组所在的groups权限内容,此操作通过查询 groups_perm_relation 关联得到。查询语句你可以从perm类中的 getGroupsPerm()方法得到。
接着,我们要得到此用户的附加权限,也就是区别于他所在的权限组的权限,此操作通过member_perm_relation 表得到,查询语句可能参考 perm 类中的 getMemberAddPerm()方法。
在完成了以上操作后,我们要进行权限合并了。
通过perm中的getMemberAllPerm()方法得到所有此用户所有权限id即pid,其中用到的合并数组函数array_merge()及array_unique()移除数组中重复的值函数, 你可以查一下手册,得到更详细的说明。

因为本实例是为开发OA用的权限系统,所以,加入了更多人想要的隐藏无权限分类及文件。perm函数中的 getFatherMenuID()是比较重要的一环,我思考了许久才做出来,因为第一次这样做,不知效率如何,望大家测试。主要通过此方法得到相应权限的父线索ID,在此方法中,去了没有权限的分类,然后通过 getMemberPermAllList() 得到所有当前用户的分类及分类下拥有权限的文件列表,大家可以对本程序评论一下。

其中的另一个重点是checkPriv.calss.php 文件中的check()类,这个文件决定了是否有进入本页面的直接权限。工作原理如下:
1.首先得到当前文件需要的权限id即permission中的id
2.通过 check类中的checkFilePerm()方法检查用户是否有此项权限操作,根据获得的结果,返回true或者false
3.在相应的页面加入checkFilePerm()方法进入验证。至如如何得到的,请自行研究或者跟贴发问。

本例中所有用到的函数只有三个,都可以在includes/functin.php中找到,这是一个函数集。
之所以发表这个东西,是因为偶是第一次写这样的权限类,以前都是用别人的,也算是偶对村里的一个贡献吧,从村里获取的东西太多了。还有,以前答应了 QQ群PHP Family(31::838) 闲哥等人要求偶写的关于 php应用项目中的目录分配。其实这个目录分配还不够合理,但对于一般应用的企业网站来说。足够了。以后有机会把偶开发OA的目录架构方案拿出来供大家讨论。谢谢。

安装,新建数据库 perm 导入文件perm.sql。配置configs.inc.php,以配合程序运作。注意设置网站物理路径 define("ROOTPATH","x:/xxxxx");

因为时间紧没有写login程序,所以在index.php 声明了一个 $_SESSION['user']['uid'];如果你使用本程序,在设定session时,请遵守本程序的设定原则或者更改perm.class.php 文件中的 perm()方法:$this->mid = $_SESSION['user']['uid']为$this->mid = 你设定的session方法,如$_SESSION['userID'];

对,还有一点是此实例中包含了adodb及smarty的配置操作,前阵子大家讨论的比较多,初学者也可以通过此了解一点。不敢说是很棒的,但偶一直这样用,觉得很爽。

下载链接 http://phpx.com/happy/attachment.php?s=&postid=694646   // 里面是使用smart和adodb做的,推荐下载





http://www.niftyadmin.cn/n/3652082.html

相关文章

[转]与微软Windows Update自动更新服务同步的镜像站点

西安交通大学软件学院WindowsUpdate服务器http://202.117.21.253/厦门大学网络中心WindowsUpdate自动更新服务http://windowsupdate.xmu.edu.cn上海交通大学WindowsUpdate自动更新服务http://windowsupdate.sjtu.edu.cn上海大学计算中心WindowsUpdate自动更新服务http://window…

[转]今天看到的一篇js屏蔽键盘的代码,经典!

from: http://community.csdn.net/Expert/topic/3766/3766060.xml?temp.3094904请写一段Javascript的代码,防止用户提交表单后刷新网页(例如按F5或按IE上的刷新按钮)重新提交表单内容。页面提交是在本页面提交到本页面。大家帮帮忙&#xff…

非关系型数据库(NoSQL)------Redis介绍和配置

内容概要一、非关系型数据库和关系型数据库的介绍(1)关系型数据库(2)非关系型数据库二、关系型数据库和非关系型数据库的区别(1)存储方式的不同(2)扩展方式不同(3&#x…

php生成SessionID和图片校验码的思路和实现

做一个后台登陆需要用到校验码,前台的用户跟踪需要用到SessionID,当然,默认的PHP开启了Session以后就有了一个SessionID,但是我需要自己的,并且能够存储进数据库,那么我就尝试了一下,构造了以下…

redis的高可用(主从复制、哨兵、集群)

内容概要一、Redis主从复制1、Redis主从复制概念2、Redis主从复制作用3、Redis主从复制流程4、Redis主从复制的部署(1)安装Redis(所有主机)(2)修改Master节点Redis配置文件(3)修改Sl…

php实现备份mysql数据库

想在PHP后台管理直接能够备份数据库,于是想呀想,一直没有什么思路,一开始是考虑用php来访问服务器安装mysql的目录,比如 /usr/local/mysql/data目录,直接把下面对应的文件进行备份,但是出现了问题&#xff…

rsync介绍与配置(rsync+inotify实时同步)

内容概要一、rsync介绍二、rsync同步源三、配置rsync源1、基本思路2、rsync命令3、配置源的两种表达方式四、配置rsync下行同步(1)关防火墙、安装相应的软件(2)建立/etc/rsyncd.conf 配置文件(3)为备份账户…

[转]OOP的PHP长啥样

// from: http://bbs.chinaunix.net/forum/viewtopic.php?t224412在PHP的论坛中总是听到有人对PHP的OOP支持说三道四的,说这有缺陷,那里不足,但是都拿不出实际的例子。原来说过要和大家说说这事,但是一直很忙,现在算…