Я разрабатываю сайт для развлечения и пытаюсь реализовать контроль доступа к каталогам на основе побитовых операторов.
Я определил 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!
echo(GROUP2 & GUEST);
печатает1
- person webbiedave   schedule 13.08.2010GROUP2 & GUEST
мне тоже возвращает 1. - person apaderno   schedule 13.08.2010