用二进制控制权限码,int类型的32位,比如总的权限码来个1000,说明第四位有权限,其他没有权限,那么小弟我该如何判断各位的权限码,多个权限呢
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用二进制控制权限码,int类型的32位,比如总的权限码来个1000,说明第四位有权限,其他没有权限,那么小弟我该如何判断各位的权限码,多个权限呢,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2554字,纯文字阅读大概需要4分钟。
内容图文
![用二进制控制权限码,int类型的32位,比如总的权限码来个1000,说明第四位有权限,其他没有权限,那么小弟我该如何判断各位的权限码,多个权限呢](/upload/InfoBanner/zyjiaocheng/227/96bc41a48112497789e65e920ad3a9ea.jpg)
二进制用int类型32位表示那个位有权限,下面的32位二进制表示权限码
全部有权限的话是: 11111111 11111111 11111111 11111111 //(下面的最前面的00000都是可以省略的)
只有最低位有权限:00000000 00000000 00000000 00000001
第一位有权限: 00000000 00000000 00000000 00000010
第二位有权限: 00000000 00000000 00000000 00000100
多个权限的: 00000000 00000000 00000000 00000101 //(这个是最后一位和第二位有权限)
我想问的是,假如我第零位是增加权限,第一位是查找权限,第二位是更新权限,第三位是删除权限,
但是单个权限时候我怎么判断这位有权限,或者给出的权限码是多个权限的时候我怎么能判断到底它有啥权限呢?
看看谁能写个方法,把得到的权限码放到方法里就能判断?
我这个其实要判断完是要放到前端展现到前端界面的 四个复选框
增加 删除 修改 删除 //如果后端判断的是有两个权限则用户进入界面是看到 两个复选框是直接选中的????做php做权限的卡到这里了 求大牛们指导???、??/、????
------解决思路----------------------
參考一下 Linux 權限的做法 777 755 .... 前端顯示 根據 所具備的權限 展示就可以了.
------解决思路----------------------
分割,判断,应该是这两个步骤了。。
我看过的大部分权限都是 1,1,1,1,1,1,1,1这样子有分割符号好区分的。
------解决思路----------------------
很简单,位与
$权限 = array(
'增加' => 0b1,
'查找' => 0b10,
'更新' => 0b100,
'删除' => 0b1000,
);
$权限字 = 0b101;
foreach($权限 as $k=>$v) {
printf("<input type=checkbox name=permit[] value=%s %s>%s
\n", $k, $权限字 & $v ? 'checked' : '', $k);
}
增加
查找
更新
删除
------解决思路----------------------
$权限 = array(
'增加' => 0b1,
'查找' => 0b10,
'更新' => 0b100,
'删除' => 0b1000,
);
$权限字 = 0b101;
foreach($权限 as $k=>$v) {
printf("<input type=checkbox name=permit[] value=%s %s>%s
\n", $v, $权限字 & $v ? 'checked' : '', $k);
}
增加
查找
更新
删除
------解决思路----------------------
考虑到多个权限的问题,pow的第二个参数可以一直向上增。不知道你看明白没有
$add=pow(2,1);//2
$del=pow(2,2);//4
$update=pow(2,3);//8
$query=pow(2,4);//16
//增加&删除
$p=$add+$del;
if(getstatus($p,1)){//1是查询
echo '有增加的权限
';
}
//增加&删除&修改
$p=$add+$del+$update;
if(getstatus($p,3)){//3是修改
echo '有修改的权限
';
}
if(!getstatus($p,4)){//4是查询
echo '没有查询的权限
';
}
function getstatus($status,$p){
$t = $status & pow(2, $p) ? 1 : 0;
return $t;
}
------解决思路----------------------
你现在应该是可以设置32种权限,判断单个标志位是否有这个权限
getAuth($postStatus, $targetStatus){
return $status & $targetStatus;
}
getAuth(0x21f, 0x78); //判断是否有 00000000 00000000 00000000 011111000权限
内容总结
以上是互联网集市为您收集整理的用二进制控制权限码,int类型的32位,比如总的权限码来个1000,说明第四位有权限,其他没有权限,那么小弟我该如何判断各位的权限码,多个权限呢全部内容,希望文章能够帮你解决用二进制控制权限码,int类型的32位,比如总的权限码来个1000,说明第四位有权限,其他没有权限,那么小弟我该如何判断各位的权限码,多个权限呢所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。