zoukankan      html  css  js  c++  java
  • PHP-权限控制类(转)

    <?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)."
    ";   
    //判断执行的操作是否有权限   
    if (true === $pruview->check(include_purview::CREATE ))   
    {   
         create(); //要执行的操作   
    }   
    else   
    {   
        exit('您没有权限!');   
    }   
    //去掉用户的添加权限   
    $pruview->delPur(include_purview::CREATE );   
    $arr = $pruview->getpur();   
    echo '该用户的权限有:'.join(',',$arr)."
    ";   
    //执行添加操作   
    if (true === $pruview->check(include_purview::CREATE ))   
    {   
         create(); //要执行的操作   
    }   
    else   
    {   
        echo '您没有权限!'."
    ";   
    }   
    //加上用户的添加权限   
    $pruview->addPur(include_purview::CREATE );   
    $arr = $pruview->getpur();   
    echo '该用户的权限有:'.join(',',$arr)."
    ";   
    //执行添加操作   
    if (true === $pruview->check(include_purview::CREATE ))   
    {   
         create(); //要执行的操作   
    }   
    else   
    {   
        exit('您没有权限!');   
    }   
      
    //具体的操作   
    function create()   
    {   
        echo '执行了添加操作'."
    ";   
    }  
  • 相关阅读:
    LAMP 环境搭建
    环境搭建/安装部署
    Linux 系统安装(5分钟)
    Eclipse 配置
    wsdl生成的客户端
    Oracle 修改字符集
    jquery expand
    js中不常用的对象或方法
    js中面向对象的封装
    JavaScript点击li显示索引
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3711581.html
Copyright © 2011-2022 走看看