|
- <?php
- /**
- * 权限控制类
- */
- classinclude_purview
- {
- /**
- * 类的唯一实例
- */
- privatestatic$instance;
-
- /**
- * 权限常量
- */
- constSELECT = 0x1;//查询
- constCREATE = 0x2;//添加
- constEDIT = 0x4;//修改
- constDELETE=0x8;//删除
-
- /**
- * 角色
- */
- private$annoy='';//匿名用户
- private$user='';//注册用户
- private$admin='';//管理用户
- private$usertype='annoy';
- private$hashtable=array(1=>'查询',2=>'添加',4=>'修改',8=>'删除');
-
- /**
- *
- */
- publicfunction__set($name,$value)
- {
- if($name=='usertype')
- {
- if($value!='')
- {
- $this->usertype =$value;
- }
- }
- }
-
- /**
- * 构造函数 给角色赋予权限
- */
- privatefunction__construct()
- {
- $this->annoy = self::SELECT;
- $this->user = self::SELECT | self::CREATE;
- $this->admin = self::SELECT | self::CREATE | self::EDIT | self::DELETE;
- }
-
- /**
- * 获取类的唯一实例
- */
- publicstaticfunctiongetInstance()
- {
- if(self::$instance===null){
- self::$instance=newinclude_purview();
- }
- returnself::$instance;
- }
-
- /**
- * 检查权限
- *
- * @param $usertype 角色
- * @param $purview 权限
- */
- publicfunctioncheck($purview)
- {
- if($this->{$this->usertype}&$purview)
- {
- returntrue;
- }
- returnfalse;
- }
-
- /**
- * 给角色加权限
- */
- publicfunctionaddPur($purview)
- {
- $this->{$this->usertype}|=$purview;
- }
-
- /**
- * 给角色减权限
- */
- publicfunctiondelPur($purview)
- {
- $this->{$this->usertype}^=$purview;
- }
-
- /**
- * 返回角色拥有的权限
- */
- publicfunctiongetPur()
- {
- $arr=array();
- foreach($this->hashtableas$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('您没有权限!');
- }
- //具体的操作
- functioncreate()
- {
- echo'执行了添加操作'."\n";
- }
|
|
|
|