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中的CMS的涵义
Mar 11 PHP
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
php 启动报错如何解决
Jan 17 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 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中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
公司年终奖分配方案
2014/06/16 职场文书
学校运动会报道稿
2014/09/23 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
公司周年庆典标语
2014/10/07 职场文书
应聘教师自荐信
2015/03/26 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
Python jiaba库的使用详解
2021/11/23 Python
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android