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调用三种数据库的方法(1)
Oct 09 PHP
其他功能
Oct 09 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
Yii中表单用法实例详解
Jan 05 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
简单实现php上传文件功能
Sep 21 PHP
php将字符串转换为数组实例讲解
May 05 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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 flv视频时间获取函数
2010/06/29 PHP
php跨服务器访问方法小结
2015/05/12 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python 从list中随机取值的方法
2020/11/16 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
送给程序员的20个Java集合面试问题
2014/08/06 面试题
建筑施工员岗位职责
2013/11/26 职场文书
副总经理工作职责
2013/11/28 职场文书
大学军训感言
2014/01/10 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
秋季运动会广播稿大全
2014/02/17 职场文书
运输服务质量承诺书
2014/03/27 职场文书
小学生期末评语大全
2014/04/21 职场文书
公司投资建议书
2014/05/16 职场文书
南湾猴岛导游词
2015/02/09 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技