sql >> Databasteknik >  >> RDS >> Mysql

Bitmanipulation och MySQL-hämtning i PHP

Har du funderat på att lagra dina behörigheter som ett heltal, med varje behörighet ett binärt värde (dvs 1,2,4,8,16), och du lägger ihop alla deras behörigheter. Du kan sedan kontrollera om de har en given behörighet med &-operatorn

Som så:

if ($accessLevel & $userPermissions) 

Det ger dig ett mycket mer användbart system än att lagra ett binärt tal

Som begärts i kommentarerna, lite mer information.

Du skulle ställa in din användartabell för att ha ett heltalsfält för att lagra dina behörigheter. Var och en av dina behörighetsnivåer skulle ha en binär multipel (vet inte den korrekta termen här) som motsvarar värdet på en binär bit. Till exempel:

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

Och så vidare, så många som krävs. För att skapa en användarbehörighetsnivå ELLER du värdena tillsammans. Låt oss anta att nivåerna ovan lagras i en klass som statiska värden, du skulle skapa det så här:

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

Vilket ger dig en användare som kan läsa och skapa, men inte redigera eller ta bort.

För att kontrollera om en användare har behörighet att utföra en åtgärd använder du OCH:

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

Detta ger dig ett enkelt databasfält, som är så utbyggbart som du realistiskt behöver, och enkelt att använda kontroller och ändringar. Du kanske också vill överväga att lagra behörighetsnivåer i en annan tabell, etc, beroende på vilken nivå av anpassning du kan behöva.



  1. Hur ACOS() fungerar i MariaDB

  2. laravel databasanslutning returnerar odefinierat indexfel

  3. Lägga till data till ett MySQL-databasfält som redan har data i sig

  4. Exempel på hur man använder bind_result vs get_result