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 JSON格式数据交互实例代码详解
Jan 13 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
PHP输出时间差函数代码
Jan 28 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
PHP观察者模式原理与简单实现方法示例
Aug 25 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
浅谈PHP匿名函数和闭包
Mar 08 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 PHP
如何解决php-fpm启动不了问题
Nov 17 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
php5.2时间相差8小时
2007/01/15 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
js面向对象编程总结
2017/02/16 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
JS实现京东商品分类侧边栏
2020/12/11 Javascript
python实现车牌识别的示例代码
2019/08/05 Python
Python telnet登陆功能实现代码
2020/04/16 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
求职简历自荐信
2013/10/20 职场文书
临床医学应届生求职信
2013/11/06 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
目标责任书范文
2014/04/14 职场文书
庆元旦活动总结
2014/07/09 职场文书
2014预备党员批评与自我批评思想汇报
2014/09/20 职场文书
2014年库房工作总结
2014/11/26 职场文书
个人求职意向书
2015/05/11 职场文书
中学音乐课教学反思
2016/02/18 职场文书
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL