专栏首页仙士可博客使用二进制进行权限控制

使用二进制进行权限控制

使用二进制进行权限控制,可减少程序的逻辑判断以及提升效率,linux系统的777权限原理也是通过2进制进行判断的

例如,当需要判断某个账号是否有,增加,修改,删除,查询,常规判断需要4个权限字段,进行4种判断

使用二进制判断,只需要位运算判断权限码就行了

以下是原理以及教程

位运算说明:http://www.php20.cn/article/116

配置增删查改权限值

$creat=1;//增0001
$update=2;//改0010
$read=4;//查0100
$delete=8;//删1000

术语定义:

授权码:权限值的集合表示,例如linux的777权限,其实是

0001|0010|0100 = 0111(十进制7)

授权值:单个权限的权限值,例如linux的执行(1)写入2读取4,注意:权限值必须是2的幂级数,否则会出错!

授权:权限码=授权码的'或'操作0001|0010|0100 = 0111(十进制7)

回收权限:待回收的权限取反之后,和授权码进行'与'操作,例如,1111权限,去除增加权限,0001取反为1110,1110&1111 = 1110

验证权限:1:"授权值" = "授权码"&'授权值'  2:"授权码" = "授权码"|"授权值"

具体解释:

权限值:

php的int类型32位支持21亿左右的数值,转为二进制最大支持31位,可代表31种权限状态,理论上是足够用的啦

例如

$creat=1;//增0001
$update=2;//改0010
$read=4;//查0100
$delete=8;//删1000
$othe_1=16;//其他10000
$othe_2=32;//其他100000
$othe_3=64;
$othe_4=128;

授权:

例如用户a有查,改,删除权限

$a = $read|$update|$delete;
echo $a;//a= 14;二进制为1110

验证权限

判断用户$a是否有增加权限,

var_dump($creat==($creat&$a));//输出false,代表没有增加权限
var_dump($a==($a|$creat));//输出false,代表没有增加权限

判断用户$a是否有修改权限

var_dump($update==($update&$a));//输出true,代表有修改权限
var_dump($a==($a|$update));//输出true,代表有修改权限

以上就是二进制权限控制的内容啦,这样进行验证权限,可以少去多重判断,少几个表字段,还能提高代码运行效率哦!

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ajaxfileupload上传文件和报错syntaxerror: Unexpected end of input(…)

    jQuery插件AjaxFileUpload可以实现ajax文件上传,下载地址:http://www.phpletter.com/contents/ajaxfi...

    仙士可
  • 关于在windows上进行swoole开发的软件使用

    转眼就是2019年了,又好久没更新博客了,今天带来我在windows下写swoole代码(买不起mac的仙士可)

    仙士可
  • tp框架实现数组翻页

    自己在尝试做一个wap文字游戏,有一些数据内容是序列化后的数据,取出来是数组,所以做了一个tp数组翻页函数

    仙士可
  • 自制权限框架(二)注解

      上一篇中,咱们介绍了如何使用jsp自定义标签编写权限框架。在jsp中,权限标签内的内容,只有在用户拥有权限的时候,才能够正常的展示。

    小忽悠
  • 让你相见恨晚的android权限业务实践

    在上一篇Android权限中,我们介绍了一些权限相关的知识,也简述了新的Android M带来的权限变化,我们如何应对这种变化?是摆着我们面前的紧要问题。 现在...

    腾讯移动品质中心TMQ
  • Android权限机制,你真的了解吗?

    一、Android的权限机制 Android是目前最流行的智能手机软件平台之一,在智能移动终端如火如荼发展的同时,其安全态势也日益严峻。有调查表明,恶意软件的...

    腾讯移动品质中心TMQ
  • JeeSite | 访问控制权限

      在各种后台系统中都会涉及到权限的管控,从功能权限的管控,到数据权限的管控,都是为了让系统的在使用的过程中更加的安全。功能权限管控是对针对不同的角色可以进行不...

    码农UP2U
  • 额 明天接着修改

    每个功能都有相应的URL地址。(对功能的控制就是对URL地址访问的控制)

    lpe234
  • Linux学习笔记(七)权限管理命令

    umask默认权限是Linux权限的一种,主要用于让Linux中的新建文件和目录拥有默认权限

    LRainner
  • 【自然框架】之通用权限(八):权限到字段(列表、表单、查询)

     通用权限想要写的文章目录:(这是第八章) 1、 简介、数据库的总体结构 2、 介绍人员表组 3、 介绍组织结构表组 4、 介绍角色表组 5、 介绍“项目自我描...

    用户1174620

扫码关注云+社区

领取腾讯云代金券