PHP-权限控制类
http://blog.csdn.net/painsonline/article/details/7183679
- <?php
- /**
- * 权限控制类
- */
- class include_purview
- {
- /**
- * 类的唯一实例
- */
- private static $instance;
- /**
- * 权限常量
- */
- const SELECT = 0x1; //查询
- const CREATE = 0x2; //添加
- const EDIT = 0x4; //修改
- const DELETE = 0x8; //删除
- /**
- * 角色
- */
- private $annoy = ''; //匿名用户
- private $user = ''; //注册用户
- private $admin = ''; //管理用户
- private $usertype = 'annoy';
- private $hashtable = array(1=>'查询',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";
- }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2015-11-04 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)