Я разрабатываю сайт для развлечения и пытаюсь реализовать управление доступом к каталогам на основе побитовых операторов.
Я определил 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!