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 相关文章推荐
文件系统基本操作类
Nov 23 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
PHP实现合并discuz用户
Aug 05 PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHPTree――php快速生成无限级分类
Mar 30 PHP
php微信开发之关注事件
Jun 14 PHP
PHP常见数组排序方法小结
Aug 20 PHP
laravel中的一些简单实用功能
Nov 03 PHP
Laravel路由研究之domain解决多域名问题的方法示例
Apr 04 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 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.MVC的模板标签系统(三)
2006/09/05 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
js 金额文本框实现代码
2012/02/14 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
Python3学习笔记之列表方法示例详解
2017/10/06 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
python利用7z批量解压rar的实现
2019/08/07 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
pytorch 求网络模型参数实例
2019/12/30 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
工程师自我评价怎么写
2013/09/19 职场文书
人事任命书范文
2014/06/04 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏