【发布时间】:2010-08-13 17:53:35
【问题描述】:
我正在开发一个有趣的网站,我正在尝试实现基于位运算符的目录访问控制。
我已经定义了GUEST = 1, GROUP1 = 15 and GROUP2 = 23
如果我比较
echo (23 & 1); // print 1
但如果我定义GUEST、GROUP1 和GROUP2:
define('GUEST', 1);
define('GROUP1', 15);
define('GROUP2', 23);
// and then
echo (GROUP2 & GUEST); // print 0
echo USER_GUEST.','.USER_ROLES1.','.USER_ROLES2; // print 1,15,23`
用GROUP1没问题:
echo (GROUP1 & GUEST); print 1.
我哪里错了?一些建议? 谢谢。
我发现了一些非常奇怪的东西:我的 GUEST、GROUP1 和 GROUP2 在一个 ini 文件中声明,我通过函数 parse_ini_file(self::$fileName, true); 解析该文件。一个班级内。 在我解析了文件后,我递归地定义了在 [DEFINE] 部分下定义的键=值(一个简单的技巧)。 如果我在此处评论我的 GROUP2=23 定义并在当前脚本(GROUP2 和 GUEST)中声明它,则返回 1!
【问题讨论】:
-
我已经在 PHP 4.4 和 5.2 以及
echo(GROUP2 & GUEST);prints1中测试了你的代码 -
GROUP2 & GUEST也向我返回 1。
标签: php bitwise-operators bitwise-and