Je développe un site pour le plaisir et j'essaye d'implémenter un contrôle d'accès d'annuaire basé sur des opérateurs de bit.
J'ai défini GUEST = 1, GROUP1 = 15 and GROUP2 = 23
Erreur d'opération au niveau du bit?
Si je compare
echo (23 & 1); // print 1
mais si je définis GUEST
, GROUP1
et 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`
Avec GROUP1
aucun problème:
echo (GROUP1 & GUEST); print 1.
Où est-ce que je me trompe? une suggestion? Merci.
J'ai découvert quelque chose de vraiment étrange: mon invité, GROUPE1 et GROUPE2 sont déclarés dans un fichier ini que je parse par une fonction parse_ini_file (self :: fileName $, true); dans une classe. Après avoir analysé le fichier, je définis de façon récursive les couples clé = valeur définie dans la section [DEFINE] (une astuce simple). Si je commente ma définition GROUP2 = 23 et que je la déclare dans le script courant (GROUP2 & GUEST) return 1!
J'ai testé votre code en PHP 4.4 et 5.2 et dans les deux'echo (GROUPE2 & GUEST); 'imprime '1 – webbiedave
'GROUP2 & GUEST' me renvoie aussi 1. – kiamlaluno