Aller au contenu

Bit Bashing : Dépassement de capacité


Sujets conseillés

Posté

Bonjour,

Afin de gérer les accès sur mon site et mon forum j'ai utilisé la méthode du Bit Bashing.

Seulement arrivé à un certain nombre de règles (32 exactement) je dépasse la capacité des entiers.

Exemples :

Règle : Valeur Décimale

00 : 1

01 : 2

02 : 4

03 : 8

04 : 16

05 : 32

06 : 64

07 : 128

08 : 256

09 : 512

10 : 1024

11 : 2048

12 : 4096

13 : 8192

14 : 16384

15 : 32768

16 : 65536

17 : 131072

18 : 262144

19 : 524288

20 : 1048576

21 : 2097152

22 : 4194304

23 : 8388608

24 : 16777216

25 : 33554432

26 : 67108864

27 : 134217728

28 : 268435456

29 : 536870912

30 : 1073741824

31 : -2147483648 :excl:

32 : 1 :excl:

33 : 2 :excl:

34 : 4 :excl:

...

Voila, alors j'ai 2 questions :

- Puis-je remedier à ce problème tout en continuant à utiliser le Bit Bashing pour gérer les droits ?

Et si oui comment ?

ou

- Dans le cas contraire quelle serait la meilleur méthode pour gérer les droits des membres ?

(sachant que l'utilisation de groupes est exclue et que le nombre de droits à attibuer sera asser important)

Merci pour votre aide :)

Posté

Ca représente un nombre très important de droits.

Si effectivement tu as besoin de plus de droits, je crains que la méthode soit de passer par une base de données.

Mais es tu sûr d'avoir besoin de plus de 32 droits différents ?

Posté (modifié)

Merci pour ta réponse Anonymus.

En fait, au vu du site et du forum, le cap des 32 droits différents sera largement dépassé.

Ma 2ème question porterait plutôt sur le format à utiliser pour stocker les droits dans la base de donnée.

Edit: Merci MarvinLeRouge, je vais essayer :)

Modifié par Country
Posté

On est bien d'accord, ce sont 32 droits différents, que tu peux 'additionner' !

Autrement dit, ca doit te laisser une très très grande marge de manoeuvre.

Posté (modifié)

MarvinLeRouge, si je ne trompe pas les solutions que tu me donne sont pour mysql, hors "le bug" intervient dès php.

On est bien d'accord, ce sont 32 droits différents, que tu peux 'additionner' !

Autrement dit, ca doit te laisser une très très grande marge de manoeuvre.

<{POST_SNAPBACK}>

Heu, je n'ai pas bien compri :huh: .

Voici un exemple du problème :

// Utilisateur qui à 3 accès
$news_edit  = 1<<5; // Accès d'id 5
$forum_reply = 1<<25; // Accès d'id 25
$forum_del  = 1<<31; // Accès d'id 31
$acces=$news_edit | $forum_reply | $forum_del;
echo $acces;

Modifié par Country
Posté
// Utilisateur qui à 3 accès
$news_edit  = 1<<5; // Accès d'id 5
$forum_reply = 1<<25; // Accès d'id 25
$forum_del  = 1<<31; // Accès d'id 31
$acces=$news_edit | $forum_reply | $forum_del;
echo $acces;

<{POST_SNAPBACK}>

Et tu en as plus de 32, comme ca ? Sachant que tu peux les regrouper ?

(par exemple, un 'superutilisateur' peut faire $forum_del et $news_del, etc..)

Posté

Bin, des accès d'id XX, oui il y en a plus de 32. Mais les "regrouper" correspondrai à faire des groupes d'utilisateurs, ce qui ne collerai pas.

Posté (modifié)
Voici un exemple du problème :

// Utilisateur qui à 3 accès
$news_edit  = 1<<5; // Accès d'id 5
$forum_reply = 1<<25; // Accès d'id 25
$forum_del  = 1<<31; // Accès d'id 31
$acces=$news_edit | $forum_reply | $forum_del;
echo $acces;

<{POST_SNAPBACK}>

Tu sembles avoir plusieurs "modules" où tu peux donner des droits. N'est-il pas possible de regrouper ces "droits" dans divers champs MySQL? Un champ pour "news", un autre pour "forum", etc. étant donné que chacun des "modules" sont indépendants et donc ne devrait pas, dans une certaine philosophie, être additionnés ensemble.

Attention, je ne parle pas de groupe d'utilisateurs, mais de création de regroupement de droits.

Modifié par Xenon_54

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...