定义存储在变量中的某些功能

时间:2013-03-07 15:38:19

标签: php

我正在构建一个像这样工作的权限系统:

DEFINE ('CAN_POST', 1);
DEFINE ('CAN_READ', 2);

DEFINE ('IS_GUEST', '');
DEFINE ('IS_USER', CAN_READ);
DEFINE ('IS_MODERATOR', CAN_READ | CAN_POST);

然后我有一个具有以下权限的当前用户:

DEFINE ('CURRENT', IS_MODERATOR);

我这样检查:

if (CURRENT & CAN_POST) print('CAN MAKE POSTS<br />');
if (CURRENT & CAN_READ) print('CAN READ STUFF<br />');

问题从这里开始:

我需要从数据库中获取当前用户权限,它当然是一个字符串。例如,我将在数据库中包含:IS_MODERATOR | CAN_REVIEW,这意味着用户拥有IS_MODERATOR拥有(CAN_READ, CAN_POST)以及此CAN_REVIEW的所有权限。

如何定义具有 CURRENT功能的IS_MODERATOR | CAN_REVIEW常量,而不仅仅是一串字符串,这将不起作用。

1 个答案:

答案 0 :(得分:2)

当然,这不是一个字符串,而是一个nubmer 只需将您的权利通常赋予两个权利,并将其作为每个人使用。

说,如果CAN_REVIEW = 4,则IS_MODERATOR | CAN_REVIEW将存储为7

您甚至可以在SQL查询中检查权限。

或者您可以解析检索到的值:

define('RIGHTS_CAN_REVIEW',4); //somewhere in config files
$rights = 7; //from database
define('CAN_REVIEW', (bool)$rights & RIGHTS_CAN_REVIEW);

现在'CAN_REVIEW'包含布尔TRUE
如果$rights为1或2,则会FALSE