php 做权限管理
程序员文章站
2022-12-01 17:48:59
假设有十进制数字10
获取10的二进制每一位的值:
(10 >> 0) & 0x01 //最低位的值
(10>> 1)& 0x01...
假设有十进制数字10
获取10的二进制每一位的值:
(10 >> 0) & 0x01 //最低位的值
(10>> 1)& 0x01 //倒数第二位的值
假设有二进制数101
转10进制
$res = 0;
$res |= (1
$res |= (1
//中间位不是1
系统。共有4种权限 private $power = array( "P1", "P2", "P3", "P4", ); //获取用户权限的int值 public function getPowerInt($user){ $res = 0; foreach($this->power as $k => $v){ if(in_array($v,$user)){ $res |= (1 power as $k => $v){ $res[$v] = ($num >> $k) & 0x01; } return $res; } } //假设现在有个用户拥有P1,P4权限 $user = array('P1','P4'); $test = new Test(); //查看用户权限的int值 var_dump($test->getPowerInt($user));//输出9 //注意顺序为倒序如果有个用户是0101即只有P1,P3两个权限,即十进制5, //输出权限列表 var_dump($test->getPowerByInt(5)); //输出array(4) { // ["P1"]=> // int(1) // ["P2"]=> // int(0) // ["P3"]=> // int(1) // ["P4"]=> // int(0) // } //----------------如果权限不够用了,需要新增权限-------- //倒序。新增在高位 //修改$power // $power = array( // "P1", // "P2", // "P3", // "P4", // "P5", // ); // 测试新结果 :老权限不受影响。老用户默认没有新权限 // 所以可以在设计之初认为最低位为最高权限,all。 // var_dump($test->getPowerInt($user));//输出9 // var_dump($test->getPowerByInt(5)); //输出array(4) { // ["P1"]=> // int(1) // ["P2"]=> // int(0) // ["P3"]=> // int(1) // ["P4"]=> // int(0) // ["P5"]=> // int(0) // }
上一篇: JSP循环输出Session中的所有值
下一篇: php过滤ascii控制字符