博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP-权限控制类(转)
阅读量:6504 次
发布时间:2019-06-24

本文共 2810 字,大约阅读时间需要 9 分钟。

'查询',2=>'添加',4=>'修改',8=>'删除'); /** * */ public function __set($name,$value) { if ($name == 'usertype') { if ($value != '') { $this->usertype = $value; } } } /** * 构造函数 给角色赋予权限 */ private function __construct() { $this->annoy = self::SELECT; $this->user = self::SELECT | self::CREATE; $this->admin = self::SELECT | self::CREATE | self::EDIT | self::DELETE; } /** * 获取类的唯一实例 */ public static function getInstance() { if (self::$instance === null){ self::$instance = new include_purview(); } return self::$instance; } /** * 检查权限 * * @param $usertype 角色 * @param $purview 权限 */ public function check($purview) { if ($this->{
$this->usertype} & $purview) { return true; } return false; } /** * 给角色加权限 */ public function addPur($purview) { $this->{
$this->usertype} |= $purview; } /** * 给角色减权限 */ public function delPur($purview) { $this->{
$this->usertype} ^= $purview; } /** * 返回角色拥有的权限 */ public function getPur() { $arr = array(); foreach ($this->hashtable as $k => $v) { if ($k & $this->{
$this->usertype}) { $arr[] = $v; } } return $arr; } } 调用示例PHP代码/*** 示例*/ //在session中读用户组 @session_start(); $_SESSION['role'] = 'user'; //获取权限类的实例 $pruview = include_purview::getInstance(); //设置角色 $pruview->usertype = $_SESSION['role']; //获取该角色拥有的权限 $arr = $pruview->getpur(); echo '该用户的权限有:'.join(',',$arr)."\n"; //判断执行的操作是否有权限 if (true === $pruview->check(include_purview::CREATE )) { create(); //要执行的操作 } else { exit('您没有权限!'); } //去掉用户的添加权限 $pruview->delPur(include_purview::CREATE ); $arr = $pruview->getpur(); echo '该用户的权限有:'.join(',',$arr)."\n"; //执行添加操作 if (true === $pruview->check(include_purview::CREATE )) { create(); //要执行的操作 } else { echo '您没有权限!'."\n"; } //加上用户的添加权限 $pruview->addPur(include_purview::CREATE ); $arr = $pruview->getpur(); echo '该用户的权限有:'.join(',',$arr)."\n"; //执行添加操作 if (true === $pruview->check(include_purview::CREATE )) { create(); //要执行的操作 } else { exit('您没有权限!'); } //具体的操作 function create() { echo '执行了添加操作'."\n"; }

 

转载于:https://www.cnblogs.com/xingmeng/p/3711581.html

你可能感兴趣的文章
【Mac】Mac键盘实现Home, End, Page UP, Page DOWN
查看>>
实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求
查看>>
安德鲁斯----多媒体编程
查看>>
[zz]在linux中出现there are stopped jobs 的解决方法
查看>>
Delphi下实现全屏快速找图找色 一、数据提取
查看>>
查询表字段信息
查看>>
logback与Log4J的区别
查看>>
关于机器学习的最佳科普文章:《从机器学习谈起》
查看>>
dxFlowChart运行时调出编辑器
查看>>
NET Framework 3.0 (WinFX) RTM发布
查看>>
图片拼接器
查看>>
C++ TinyXml操作(含源码下载)
查看>>
读取swf里所有类定义
查看>>
DOWNLOAD 文件
查看>>
ogre场景图与场景内容分离
查看>>
中断小笔记
查看>>
C#委托、事件、消息(入门级)
查看>>
通信常用概念
查看>>
FreeBinary 格式说明
查看>>
使用Spring Cloud和Docker构建微服务
查看>>