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执行速度全攻略(下)
Oct 09 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
php堆排序(heapsort)练习
Nov 13 PHP
PHP内核探索:变量概述
Jan 30 PHP
Yii调试SQL的常用方法
Jul 09 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 PHP
PHP简单实现解析xml为数组的方法
May 02 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多线程之内部多线程实例分析
2015/03/09 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
一份Java笔试题
2012/02/21 面试题
工程专业应届生求职信
2014/02/19 职场文书
兵马俑的导游词
2015/02/02 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
社区重阳节活动总结
2015/03/24 职场文书
撤诉申请怎么写
2015/05/19 职场文书
导游词之神仙居景区
2019/11/15 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
pytorch Dropout过拟合的操作
2021/05/27 Python
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle