如果您对二进制系统拥有多少权限,该怎么办?

时间:2012-07-23 20:19:08

标签: php permissions binary bit-manipulation

我打算使用二进制系统来处理我的权限,例如:

<?php
const POST = 1;
const DELETE = 2;
const UPDATE = 4;
const READ = 8;
const ADMIN = 16;
const ADD_PRODUCT = 32;
const DELETE_PRODUCT = 64;
const ADD_BLOG = 128;


$permission = decbin('5');

if ($permission & POST) { echo "POST <br />"; }
if ($permission & DELETE) { echo "DELETE <br />"; }
if ($permission & UPDATE) { echo "UPDATE <br />"; }
if ($permission & READ) { echo "READ <br />"; }
if ($permission & ADMIN) { echo "ADMIN <br />"; }

?>

拥有一些权限,这将很有效。但是,如果我拥有40个不同的权限呢?然后我需要加上一些非常大的数字,这对屁股来说很痛苦。

还有其他办法吗?

任何信息或帮助都会受到极大关注!

1 个答案:

答案 0 :(得分:0)

1)使用十六进制来定义常量 - 输入更容易。

2)将单独的权限分解为不同的用户角色。

e.g。

const BLOG_POST      = 0x01;
const BLOG_DELETE    = 0x02;
const BLOG_UPDATE    = 0x04;
const BLOG_READ      = 0x08;
const BLOG_SUBSCRIBE = 0x10;

const ADMIN_IS_ADMIN       = 0x01;
const ADMIN_ADD_PRODUCT    = 0x02;
const ADMIN_DELETE_PRODUCT = 0x04;
const ADMIN_ADD_BLOG       = 0x08;

即使你达到大数目,他们仍然很容易打字

const ADMIN_SOME_PERMISSION   = 0x1000;
const ADMIN_SOME_PERMISSION2  = 0x2000;