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 相关文章推荐
我的论坛源代码(六)
Oct 09 PHP
php2html php生成静态页函数
Dec 08 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
php实现encode64编码类实例
Mar 24 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
python logging日志模块的详解
2017/10/29 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
如何通过python计算圆周率PI
2020/11/11 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
美术教学感言
2014/02/22 职场文书
平安建设工作方案
2014/06/02 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python