user_table
id, etc
permission table
id, user_id, permission_type
med denne struktur kan hver bruger have flere tilladelsestyper knyttet til deres konto, en for hvert sæt funktioner, de kunne have adgang til. du behøver aldrig at ændre tabelstrukturen for at tilføje nye typer tilladelser.
for at tage dette et skridt videre, kan du gøre hver type tilladelse til et binært tal. på denne måde kan du få et sæt tilladelser til at blive repræsenteret af ét heltal ved at bruge bitvise operatorer.
for eksempel hvis du havde konstanterne
PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4
du kan kombinere disse værdier til et heltal ved hjælp af en bitvis operator "|"
(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions
for derefter at kontrollere, om de har en specifik tilladelse, skal du bruge den bitvise operator "&"
($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
hvis du gjorde det, ville du kun bruge én db-record for hvert sæt tilladelser.