打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PHP基于角色的权限管理代码
转自:http://m.blog.csdn.net/article/details?id=7183679

  PHP-权限控制类

  发表于2012/1/7 15:39:55 2868人阅读

  分类: 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';

  }

  上一篇 下一篇

  暂无评论,我去发表~

  评论(0)

  color,博客,rgb,class,class
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ecshop后台新功能权限的添加_ecshop二次开发_常见问题_ecshop教程_ECSHOP开发中心
TreeView.bmo description(TreeView在WINCC中用法总结))
JavaScript:最容易理解的原型链讲解(荐)
Lua面向对象设计中添加super
ORACLE 12C创建wm_concat函数
thinkphp5框架API token身份验证功能示例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服