Mysql
 sql >> база данни >  >> RDS >> Mysql

Манипулиране на битове и извличане на MySQL в PHP

Обмисляли ли сте да съхранявате вашите разрешения като цяло число, като всяко разрешение е двоична стойност (т.е. 1,2,4,8,16) и събирате всичките им разрешения. След това можете да проверите дали имат дадено разрешение, като използвате оператора &

Така:

if ($accessLevel & $userPermissions) 

Това ви дава много по-използваема система от съхраняването на двоично число

Както е поискано в коментарите, малко повече информация.

Вие бихте настроили вашата таблица с потребители да има цяло число, за да съхранявате вашите разрешения. Всяко от вашите нива на разрешение би имало двоично кратно (тук не знам правилния термин), което съответства на стойността на двоичен бит. Например:

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

И така нататък, колкото се изисква. За да създадете ниво на разрешение на потребителите, вие ИЛИ стойностите заедно. Да приемем, че горните нива се съхраняват в клас като статични стойности, вие бихте го създали така:

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

Което ви дава потребител, който може да чете и създава, но не и да редактира или изтрива.

За да проверите дали даден потребител има разрешение да извърши действие, използвате И:

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

Това ви дава едно просто поле на база данни, което е толкова разширяемо, колкото реалистично ще ви е необходимо, и лесни за използване проверки и промени. Може също да помислите за съхраняване на нива на разрешения в друга таблица и т.н., в зависимост от това какво ниво на персонализиране може да ви е необходимо.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql Бавно вмъкване

  2. JDBC Създаване на таблица Пример за използване

  3. Има ли replicate-rewrite-db някакво приложение в реалния свят?

  4. Общо обхождане на дърво (безкрайно) по начин на търсене в широчината

  5. Python поддържа ли MySQL подготвени изявления?