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


Posted in PHP onMarch 12, 2017

首先我们先定义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的次方

知道了这两点权限的处理就变得简单了吧,只要在每次执行涉及权限操作的时候把用户当前的权限总值和当前操作需要的权限做位与运算。如果结果为真执行,为假做报错处理就行啦(当然也不一定时报错,你可以自己设计没有权限时的程序)。

以上这篇PHP巧妙利用位运算实现网站权限管理的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
php 显示指定路径下的图片
Oct 29 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
php计算十二星座的函数代码
Aug 21 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
Jun 10 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
php中异常处理方法小结
Jan 09 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
Laravel如何实现自动加载类
Oct 14 PHP
PHP哈希表实现算法原理解析
Dec 11 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 #PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 #PHP
php pdo操作数据库示例
Mar 10 #PHP
yii2简单使用less代替css示例
Mar 10 #PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 #PHP
Yii2.0中使用js异步删除示例
Mar 10 #PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 #PHP
You might like
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
php依赖注入知识点详解
2019/09/23 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python 七种邮件内容发送方法实例
2014/04/22 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
python 实现音频叠加的示例
2020/10/29 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
自荐信的两点禁忌
2013/10/30 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python