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 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
深入php var_dump()函数的详解
Jun 05 PHP
基于php iconv函数的使用详解
Jun 09 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
Mar 18 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
微信支付开发交易通知实例
Jul 12 PHP
PHP7数组的底层实现示例
Aug 25 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 28 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
实用函数4
2007/11/08 PHP
怎样去阅读一份php源代码
2009/08/21 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
javascript delete 使用示例代码
2010/03/29 Javascript
js字符串转成JSON
2013/11/07 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
Python实现list反转实例汇总
2014/11/11 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
JSF的标签库有哪些
2012/04/27 面试题
法律进社区实施方案
2014/03/21 职场文书
2014年征兵标语
2014/06/20 职场文书
求职简历自我评价2015
2015/03/10 职场文书
防暑降温通知书
2015/04/27 职场文书
安全伴我行主题班会
2015/08/13 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers