Mysql
 sql >> Base de données >  >> RDS >> Mysql

Manipulation de bits et récupération MySQL en PHP

Avez-vous envisagé de stocker vos autorisations sous forme d'entier, chaque autorisation étant une valeur binaire (c'est-à-dire 1,2,4,8,16) et vous additionnez toutes leurs autorisations. Vous pouvez ensuite vérifier s'ils ont une autorisation donnée en utilisant l'opérateur &

Comme ceci :

if ($accessLevel & $userPermissions) 

Cela vous donne un système beaucoup plus utilisable que de stocker un nombre binaire

Comme demandé dans les commentaires, un peu plus d'informations.

Vous configureriez votre table d'utilisateurs pour avoir un champ entier pour stocker vos autorisations. Chacun de vos niveaux d'autorisation aurait un multiple binaire (je ne connais pas le terme correct ici) qui correspond à la valeur d'un bit binaire. Par exemple :

Read - 1
Edit - 2
Create - 4
Delete - 8

Et ainsi de suite, autant que nécessaire. Afin de créer un niveau d'autorisation d'utilisateurs, vous OR les valeurs ensemble. Supposons que les niveaux ci-dessus soient stockés dans une classe en tant que valeurs statiques, vous le créeriez ainsi :

$newUser->Permissions = Permissions::Read | Permissions::Create;

Ce qui vous donne un utilisateur qui peut lire et créer, mais pas modifier ou supprimer.

Pour vérifier si un utilisateur a la permission d'effectuer une action, vous utilisez AND :

if ($newUser->Permissions & Permissions::Read) {
    echo 'You can do this!';
}  else {
    echo 'You can't this!';
}

Cela vous donne un champ de base de données simple, aussi extensible que vous en aurez besoin de manière réaliste, et des vérifications et modifications simples à utiliser. Vous pouvez également envisager de stocker les niveaux d'autorisation dans une autre table, etc., en fonction du niveau de personnalisation dont vous pourriez avoir besoin.