PHP-權限控制類

http://blog.csdn.net/painsonline/article/details/7183679php

  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. }  

 

調用示例session

 

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. }  
相關文章
相關標籤/搜索