JeuWeb - Crée ton jeu par navigateur
Gestion de droits d'acces, manipulation de bits en php ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Gestion de droits d'acces, manipulation de bits en php ? (/showthread.php?tid=4665)

Pages : 1 2


Gestion de droits d'acces, manipulation de bits en php ? - php_addict - 23-03-2010

Bonsoir

je m'attaque à un problème: celui de la gestion des droits d'accès à certaines pages ou actions, je m'explique:

ayant programmé en assembleur en tant qu'amateur, j'ai tout naturellement pensé à coder les droits d'accès dans un ou plusieurs octets...1 octet étant 8 bits je pensais faire ceci:

Code :
bit number:    1   2   3   4   5   6   7   8
             +---+---+---+---+---+---+---+---+
             | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
             +---+---+---+---+---+---+---+---+

bit 1 vaut 1 --> le joueur à acces à toutes les pages du site
bit 2 vaut 1 --> le joueur ne peut pas administrer le forum
bit 3 vaut 1 --> etc....
bit 4 vaut 1 --> etc....

si mes souvenir d'assembleur intel sont exacts, on utilise rol dest, count et ror dest, count (comprenez rotate left et rotate right)
quand on utilise rotate le bit sortant est stocké dans un registre...

enfin bref...vous voyez certainement de quoi je parles...

ma question est toute bête: est ce possible en php ?

je veut dire: de quelles fonctions ou opérateurs ais je besoin ?

j'ai eu beau chercher des exemples de code en php, je n'ai rien trouvé...

mais peut être existe t il une meilleure solution ?

ceci dit je pourrais faire la même chose avec des integer:

(int)(10010010)
(int)(00110101)
(int)(11100110)
(int)(00100101)

mais je trouve cela un peu lourd à stocker en base de donnée non ?

merci de m'avoir lu

a+


RE: Gestion de droits d'acces, manipulation de bits en php ? - pascal - 23-03-2010

Je n'ai pas trouvé les fonctions binaires dans la doc PHP Sad

Le plus souple reste un système avec des groupes + droits, ça se crée très facilement et sera + évolutif que les bits.

A+

Pascal


RE: Gestion de droits d'acces, manipulation de bits en php ? - php_addict - 23-03-2010

(23-03-2010, 09:42 PM)pascal a écrit : Le plus souple reste un système avec des groupes + droits, ça se crée très facilement et sera + évolutif que les bits.

merci Wink mais qu'entends tu par groupes + droits ?


RE: Gestion de droits d'acces, manipulation de bits en php ? - pascal - 23-03-2010

Un truc du genre :
- un utilisateur peut être membre de 0 à N groupes
- un utilisateur peut avoir de 0 à N droits
- un groupe peut avoir de 0 à N droits
- une page peut être accédée selon des droits ou des groupes


RE: Gestion de droits d'acces, manipulation de bits en php ? - Argorate - 23-03-2010

Tu définis tel action/page necesite tel droit, tu definis tel groupe a tel droit, tu definis tel personne appartient a tel groupe.

tu vois l'idée? un peu comme les forum: t'as jamais eu de forum phpbb ou équivalant?


RE: Gestion de droits d'acces, manipulation de bits en php ? - php_addict - 23-03-2010

merci pour vos reponses

(23-03-2010, 10:21 PM)Argorate a écrit : tu vois l'idée? un peu comme les forum: t'as jamais eu de forum phpbb ou équivalant?

si si phpbb...ca vous parait vraiment plus simple qu'une manipulation de bits ?

je viens de trouver ceci: http://www.zpmag.com/extraits/zpm_8_sample.pdf


RE: Gestion de droits d'acces, manipulation de bits en php ? - pascal - 23-03-2010

oui, c'est plus simple car plus lisible avec la base de données.

Avec les bits, tu auras plus de difficultés à revenir sur le code après quelques mois. Il y aura aussi la question de l'évolution des droits : avec une base de données, tu gères autant de groupes / droits que tu veux.

A+

Pascal


RE: Gestion de droits d'acces, manipulation de bits en php ? - QuentinC - 23-03-2010

Remarque, c'est parfaitement possible. ON appelle ça des flags.
Tu peux utiliser les opérateurs binaires classiques du C, ils fonctionnent aussi en php : <<, >>, &, |, ^, ~


RE: Gestion de droits d'acces, manipulation de bits en php ? - php_addict - 24-03-2010

(23-03-2010, 11:49 PM)QuentinC a écrit : Remarque, c'est parfaitement possible. ON appelle ça des flags.
Tu peux utiliser les opérateurs binaires classiques du C, ils fonctionnent aussi en php : <<, >>, &, |, ^, ~

donc si le joueur a pour droit: 1011

et que 0010 represnte le droit d'acces au forum, alors:

- je n'ai qu'a faire (1011 & 0010)
- et tester si (1011 & 0010) = 0010 ???

c'est ca ?


RE: Gestion de droits d'acces, manipulation de bits en php ? - Zamentur - 24-03-2010

Non car 1011 va être compris comme 1011 en base 10 et non en binaire
De plus tu doit mettre 2(même plutôt 3) égales et non pas un seul pour le test.

Donc j'opterai pour
(11 & 2) === 2

Ceci dit peut être existe t'il une méthode pour indiquer que c'est un nombre en binaire du genre mettre un 0 ou un % systèmatiquement devant. Mais je ne sais plus.