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 相关文章推荐
几个学习PHP的网址
Nov 25 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
php常用hash加密函数
Nov 22 PHP
WordPress自定义时间显示格式
Mar 27 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
php的对象传值与引用传值代码实例讲解
Feb 26 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
weiphp微信公众平台授权设置
2016/01/04 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
解析Python编程中的包结构
2015/10/25 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python类的继承和多态代码详解
2017/12/27 Python
python设置值及NaN值处理方法
2018/07/03 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Django中的静态文件管理过程解析
2019/08/01 Python
浅谈Python 递归算法指归
2019/08/22 Python
Python绘制热力图示例
2019/09/27 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
金属材料工程个人求职的自我评价
2013/12/04 职场文书
违反学校规定检讨书
2014/01/18 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
民间借贷借条范本
2015/05/25 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
导游词之上海豫园
2019/10/24 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android