PHP-权限控制类


  1. <?php   
  2. /**
  3. * 权限控制类
  4. */  
  5.   
  6. class include_purview   
  7. {   
  8.     /**
  9.       * 类的唯一实例
  10.       */  
  11.     private static $instance;   
  12.        
  13.     /**
  14.       * 权限常量
  15.       */  
  16.     const SELECT = 0x1; //查询   
  17.     const CREATE = 0x2; //添加   
  18.     const EDIT    = 0x4; //修改   
  19.     const DELETE = 0x8; //删除   
  20.        
  21.     /**
  22.       * 角色
  23.       */  
  24.     private $annoy = ''//匿名用户   
  25.     private $user   = ''//注册用户   
  26.     private $admin = ''//管理用户   
  27.     private $usertype = 'annoy';   
  28.     private $hashtable = array(1=>'查询',2=>'添加',4=>'修改',8=>'删除');   
  29.        
  30.     /**
  31.       *
  32.       */  
  33.     public function __set($name,$value)   
  34.      {   
  35.         if ($name == 'usertype')   
  36.          {   
  37.             if ($value != '')   
  38.              {   
  39.                 $this->usertype = $value;   
  40.              }   
  41.          }   
  42.      }   
  43.        
  44.     /**
  45.       * 构造函数 给角色赋予权限
  46.       */  
  47.     private function __construct()   
  48.      {   
  49.         $this->annoy = self::SELECT;   
  50.         $this->user = self::SELECT | self::CREATE;   
  51.         $this->admin = self::SELECT | self::CREATE | self::EDIT | self::DELETE;   
  52.      }   
  53.        
  54.     /**
  55.       * 获取类的唯一实例
  56.       */  
  57.     public static function getInstance()   
  58.      {   
  59.         if (self::$instance === null){   
  60.              self::$instance = new include_purview();   
  61.          }   
  62.         return self::$instance;   
  63.      }   
  64.        
  65.     /**
  66.       * 检查权限
  67.       *
  68.       * @param $usertype 角色
  69.       * @param $purview 权限
  70.       */  
  71.     public function check($purview)   
  72.      {   
  73.         if ($this->{$this->usertype} & $purview)   
  74.          {   
  75.             return true;   
  76.          }   
  77.         return false;   
  78.      }   
  79.        
  80.     /**
  81.       * 给角色加权限
  82.       */  
  83.     public function addPur($purview)   
  84.      {   
  85.         $this->{$this->usertype} |= $purview;   
  86.      }   
  87.        
  88.     /**
  89.       * 给角色减权限
  90.       */  
  91.     public function delPur($purview)   
  92.      {   
  93.         $this->{$this->usertype} ^= $purview;   
  94.      }   
  95.        
  96.     /**
  97.       * 返回角色拥有的权限
  98.       */  
  99.     public function getPur()   
  100.      {   
  101.         $arr = array();   
  102.         foreach ($this->hashtable as $k => $v)   
  103.          {   
  104.             if ($k & $this->{$this->usertype})   
  105.              {   
  106.                 $arr[] = $v;   
  107.              }   
  108.          }   
  109.         return $arr;   
  110.      }   
  111. }  

调用示例

PHP代码
  1. /**
  2. * 示例
  3. */  
  4. //在session中读用户组   
  5. @session_start();   
  6. $_SESSION['role'] = 'user';   
  7.   
  8. //获取权限类的实例   
  9. $pruview = include_purview::getInstance();   
  10. //设置角色   
  11. $pruview->usertype = $_SESSION['role'];   
  12. //获取该角色拥有的权限   
  13. $arr = $pruview->getpur();   
  14. echo '该用户的权限有:'.join(',',$arr)."\n";   
  15. //判断执行的操作是否有权限   
  16. if (true === $pruview->check(include_purview::CREATE ))   
  17. {   
  18.      create(); //要执行的操作   
  19. }   
  20. else   
  21. {   
  22.     exit('您没有权限!');   
  23. }   
  24. //去掉用户的添加权限   
  25. $pruview->delPur(include_purview::CREATE );   
  26. $arr = $pruview->getpur();   
  27. echo '该用户的权限有:'.join(',',$arr)."\n";   
  28. //执行添加操作   
  29. if (true === $pruview->check(include_purview::CREATE ))   
  30. {   
  31.      create(); //要执行的操作   
  32. }   
  33. else   
  34. {   
  35.     echo '您没有权限!'."\n";   
  36. }   
  37. //加上用户的添加权限   
  38. $pruview->addPur(include_purview::CREATE );   
  39. $arr = $pruview->getpur();   
  40. echo '该用户的权限有:'.join(',',$arr)."\n";   
  41. //执行添加操作   
  42. if (true === $pruview->check(include_purview::CREATE ))   
  43. {   
  44.      create(); //要执行的操作   
  45. }   
  46. else   
  47. {   
  48.     exit('您没有权限!');   
  49. }   
  50.   
  51. //具体的操作   
  52. function create()   
  53. {   
  54.     echo '执行了添加操作'."\n";   
  55. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值