当前位置:  首页  >  PHP教程  >  PHP 安全  >  全局变量

PHP巧妙利用位运算实现网站权限管理

知道了这两点权限的处理就变得简单了吧,只要在每次执行涉及权限操作的时候把用户当前的权限总值和当前操作需要的权限做位与运算。如果结果为真执行,为假做报错处理就行啦(当然也不一定时报错,你可以自己设计没有权限时的程序)
首先我们先定义4个常量来设定四种权限:
  ========================================================
  define(ADD,1);//增加数据库记录的权限
  define(UPD,2);//修改数据库记录的权限
  define(SEL,4);//查找数据库记录的权限
  define(DEL,8);//删除数据库记录的权限
  ========================================================
  接下来假设有3个用户:
  A用户拥有ADD-UPD-SEL-DEL四个权限,用位或运算计算A的权限总值
  $a_all=ADD|UPD|SEL|DEL;//$all=15 可以注意到这个值和加法的结果是一样的
  B用户拥有ADD-UPD-SEL三个权限,用位或运算计算B的权限总值
  $b_all=ADD|UPD|SEL;//$all=7 这个值和加法的结果又是一样的
  C用户拥有ADD-UPD两个权限,用位或运算计算C的权限总值
  $c_all=ADD|UPD;//$all=3 这个值和加法的结果还是一样的
  ========================================================
  接下来我们用位与做运算
  $a_all&ADD 结果为真
  $a_all&UPD 结果为真
  $a_all&SEL 结果为真
  $a_all&DEL 结果为真
  ========================================================
  $b_all&ADD 结果为真
  $b_all&UPD 结果为真
  $b_all&SEL 结果为真
  $b_all&DEL 结果为假
  ========================================================
  $c_all&ADD 结果为真
  $c_all&UPD 结果为真
  $c_all&SEL 结果为假
  $c_all&DEL 结果为假
  ========================================================
  发现奥秘没有?
  1、当权限总值和没有的那个权限做位与运算,结果为假
  2、权限的值都是2的次方
  知道了这两点权限的处理就变得简单了吧,只要在每次执行涉及权限操作的时候把用户当前的权限总值和当前操作需要的权限做位与运算。如果结果为真执行,为假做报错处理就行啦(当然也不一定时报错,你可以自己设计没有权限时的程序)。
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | json解析格式化 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4