美文网首页
PHP 权限管理 位运算

PHP 权限管理 位运算

作者: 墨入烟松 | 来源:发表于2018-06-30 23:04 被阅读0次

最近在搞一个权限管理,就是通过位或运算来验证权限,来分享一下实现原理。


权限管理,核心就是权限分配权限验证两点。

权限分配

用过linux系统的同学们应该都清楚,linux中文件的权限是怎么分配的。
我们为一个文件赋了755的权限,这个7(4+2+1)的权限是有rwx三个组成。

权限名 含义 代表数字
r 可读 4
w 可写 2
x 可执行 1

同样,我们的权限分配也可以采取这种方式去做,假设我们也有一些权限需要分配

权限名 含义 代表数字
index 展示数据 1
add 新增数据 2
edit 修改数据 4
del 删除数据 8

我们现在需要给用户分配权限,与上面linux的权限分配方式相同

用户名 权限 含义
张三 1 只有 index 权限
李四 3 (1+2)index+add 权限
王五 7 (1+2+4)index+add+edit 权限
赵六 11 (1+2+8)index+add+del 权限

这样,我们的权限基本分配完毕。

权限验证

位运算

权限验证的核心点就是位或运算,也就是‘丨’这个运算符,先把PHP官网位运算符解释贴出来。

例子 名称 说明
a &b And(按位与) 将把 a 和b 中都为 1 的位设为 1。
a 丨b Or(按位或) 将把 a 和b 中任一为 1 的位设为 1。
a ^b Xor(按位异或) 将把 a 和b 中一个为 1 另一个为 0 的位设为 1。
~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
a <<b Shift left(左移) a 中的位向左移动b 次(每一次移动都表示“乘以 2”)。
a >>b Shift right(右移) a 中的位向右移动b 次(每一次移动都表示“除以 2”)。

下面就开始权限验证的代码

模拟一下场景:

    <?php
        //1、用户张三去新增数据
        //拿张三的权限 和 当前操作权限 做位或运算 如果结果等于张三的权限 就说明有该权限 否则没有
        // 1|2的结果为3
        if((1|2) != 1){
            return '权限不足';
        }
        
        //2、用户赵六去修改数据 
        // 11|8 = 11
        if((11|8) != 11){
            return '权限不足';
        }
        
        /**
         * 位或运算 原理:是二进制运算规则  两边 位都为1的设为1
         * 拿上面两个举例来说:
         * 1的二进制: 00001(就写五位吧)
         * 2的二进制: 00010
         * 这里涉及到二进制的运算 按照运算规则  结果为 00011 换算10进制结果为 3 不等于1 说明没有权限
         * 11的二进制 01011
         * 8的二进制  01000
         * 同理结果是 01011 换算十进制结果为 11 等于11 说明有权限 
         *
        */
  

相关文章

  • PHP 权限管理 位运算

    最近在搞一个权限管理,就是通过位或运算来验证权限,来分享一下实现原理。 权限管理,核心就是权限分配和权限验证两点。...

  • 位运算的简单应用-权限管理

    个人博客http://www.milovetingting.cn 位运算的简单应用-权限管理 位运算在实际的开发中...

  • php 的位运算总结

    前言 php的位运算很少会用到,但是用处很大,在有些算法中会用到,在权限管理中也会经常用到,对于理解计算机的世界也...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

  • 位运算和权限管理系统

    在Linux文件系统中,用户对文件或目录有:读、写、执行三种权限,分别使用数字:4、2、1三个数字。三者之间可任意...

  • php位运算

    一、二进制基本概念:所谓二进制就是逢二进一(0,1),因为使用二进制只有0,1两个数,易于电子方式实现。同时通过0...

  • JavaScript 中的位运算和权限设计

    1. 内容概要 2. JavaScript 位运算 2.1. Number 2.2. 位运算 3. 位运算在权限系...

  • 权限判断-位运算

    角色权限判断,这应该是大部分应用都有的功能,那么如何进行权限判断? 这里说下我们用的思路,可能会比较low,各位看...

  • PHP运算符

    PHP 算数运算符 PHP 赋值运算符 PHP 字符串运算符 PHP 递增递减运算符 PHP 比较运算符 PHP ...

  • LA(N)MP 编译安装

    注意:使用 su 或者 sudo 超级管理员权限 PHP MySQL Apache Nginx 配置PHP 安装S...

网友评论

      本文标题:PHP 权限管理 位运算

      本文链接:https://www.haomeiwen.com/subject/jyvxuftx.html