首先我们先定义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. 细粒度权限控制 linux,利用docker插件实现细粒度权限控制

    前言 我们在实际的docker运行环境下,大都会遇到多用户的情况,为了安全起见,有些用户我们不想给予其全面的docker控制权限,比如不想某些用户执行docker stop 以及docker rm 等 ...

  2. 利用位运算解决 N 皇后问题

    题目: LeetCode 51. N-Queens 分析: N 皇后问题是考查递归回溯的经典问题,深度优先搜索的难点在于如何剪枝,在这个问题里面的剪枝,我们需要利用额外的空间去记录当前行的有效空位,只 ...

  3. 利用位运算和指针实现的交换两个数的程序

    位运算是C语言的一大特色,利用异或运算可以实现交换两个数,原理是一个整数与另外一个数进行两次异或运算仍然是其本身,基本原理用式子表达如下: (1) A ^ A = 0; (2) A = A ^B; ( ...

  4. C# 利用位运算传递多个参数方法

    前言 在工作中用sendMessage的方法向另外一个进程中传递窗体的位置,长度,宽度四个值,但是sendMessage的方法签名中只有两个参数.于是在网上找到了一些代码,找到了这个利用位运算来合并参 ...

  5. 利用位运算控制开关灯问题

    <C++笔记> 利用位运算控制开关灯问题 新手上路,可能有很多不足的地方,欢迎大家多多在留言区提出自己的观点以及更好的办法. 问题描述:俱乐部一共有32盏灯,设计一个灯光控制系统,共有4部 ...

  6. C语言 利用位运算实现奇校验

    编写函数,利用位运算符实现对一个数中除最高位以外的其他二进制数进行奇校验(奇校验就是在最高位的位置上加入一个值为1或为0的位,使该字节各个位中1的数量相加为奇数),并将校验位存放到最高位. 例如:×0 ...

  7. 一则利用内核漏洞获取root权限的案例【转】

    转自:https://blog.csdn.net/u014089131/article/details/73933649 目录(?)[-] 漏洞描述 漏洞的影响范围 漏洞曝光时间 漏洞产生的原因 漏洞 ...

  8. 《位运算技巧以及Leetcode的一些位运算题目》

    目录 技巧 练习位运算 [461. 汉明距离](https://leetcode-cn.com/problems/hamming-distance/) [190. 颠倒二进制位](https://le ...

  9. php怎么获取权限操作 shell,利用php利用root权限执行shell脚本必须进行以下几个步骤...

    这几天弄的东西涉及到php利用shell脚本与Linux的交互,我们知道利用php运行脚本来访问Linux是以Apach的身份来执行的,因此它自己能够所做的事情很少的,因为没有足够的权限,这里就涉及到 ...

最新文章

  1. 小米5x_小米刷机大全(附教程)
  2. RMAN 备份SHELL
  3. 【mAP】关于目标检测mAP的一些理解
  4. 12月13日云栖精选夜读 | 干货 :5个提醒,让你远离“数据呆”
  5. JAVA Map 和 List 排序方法
  6. target ajax,jQuery target - jquery事件
  7. Java 项目 接口开发规范
  8. python中类的构成_Python类的构成元素
  9. Python(23)_while循环
  10. 微软将Silverlight主要定位在Windows Phone,其他平台更多推向HTML5
  11. 作战军事环境仿真系统软件解决方案
  12. 计算机机械和设计专业介绍,机械类包括哪些专业
  13. SQL Server 数据库增删改查语句
  14. C51 汇编和C语言编写从1加到100
  15. unity3d 角色 武器 动画 和 blender 工作流
  16. 2022年朝阳区科技创新课之“产品创新与成果转化”训练营活动圆满结束
  17. JavaScript实战操作(DOM,BOM)
  18. C盘空间不足?扩充C盘
  19. 19-10-15(msgbox、inputbox、注释)
  20. 从头开始,彻底理解服务端渲染原理

热门文章

  1. 动手动脑(继承与多态)
  2. 从编程小白到全栈开发:基于框架开发服务端
  3. ARCGIS影像配准教程
  4. Jenkins maven 编译一些问题
  5. (总结)RHEL/CentOS 7.x的几点新改变
  6. 网络营销再掀波澜,微博独领风骚
  7. ESX中的Linux热添加磁盘
  8. largest number java_将给定的数组组成最大的数 Largest Number
  9. javascript调用父窗口(父页面)的方法
  10. 十个隐藏_LOL手游:新版增加42个英雄,大白兔:10个隐藏T0角色