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 相关文章推荐
NOT NULL 和NULL
Jan 15 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
php开发文档 会员收费1期
Aug 14 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
Thinkphp无限级分类代码
Nov 11 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 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线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
javascript demo 基本技巧
2009/12/18 Javascript
JavaScript 原型继承
2011/12/26 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
jQuery.each使用详解
2015/07/07 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
Python数据类型详解(一)字符串
2016/05/08 Python
Python+微信接口实现运维报警
2016/08/27 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
python zip()函数使用方法解析
2019/10/31 Python
Django中modelform组件实例用法总结
2020/02/10 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
Python类及获取对象属性方法解析
2020/06/15 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
工程管理专业毕业生自荐信
2014/01/24 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
开学第一天的感想
2015/08/10 职场文书
组织委员竞选稿
2015/11/21 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏