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
Dec 23 PHP
php 清除网页病毒的方法
Dec 05 PHP
php中全局变量global的使用演示代码
May 18 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
PHP中error_reporting()用法详解
Aug 31 PHP
php实现分页显示
Nov 03 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
PHP-FPM的配置与优化讲解
Mar 15 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
一个程序下载的管理程序(三)
2006/10/09 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
php实现的顺序线性表示例
2019/05/04 PHP
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
javascript常用的方法分享
2015/07/01 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
python安装Scrapy图文教程
2017/08/14 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
实习自我鉴定模板
2013/09/28 职场文书
教育专业个人求职信
2013/12/02 职场文书
小学安全教育材料
2014/02/17 职场文书
《一件运动衫》教学反思
2014/02/19 职场文书
总结表彰大会主持词
2014/03/26 职场文书
献爱心倡议书
2014/04/14 职场文书
励志演讲稿范文
2014/04/29 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
世界环境日活动总结
2015/02/11 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
Python实现简单的猜单词
2021/06/15 Python
html5实现点击弹出图片功能
2021/07/16 HTML / CSS