user_table
id, etc
permission table
id, user_id, permission_type
Mit dieser Struktur könnte jeder Benutzer mehrere Berechtigungstypen mit seinem Konto verknüpfen, einen für jeden Satz von Funktionen, die er konnte Zugang haben zu. Sie müssten nie die Tabellenstruktur ändern, um neue Arten von Berechtigungen hinzuzufügen.
Um noch einen Schritt weiter zu gehen, könnten Sie jeden Berechtigungstyp in eine Binärzahl umwandeln. Auf diese Weise könnten Sie mithilfe bitweiser Operatoren eine Reihe von Berechtigungen durch eine Ganzzahl darstellen lassen.
zum Beispiel, wenn Sie die Konstanten
hättenPERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4
Sie könnten diese Werte mit einem bitweisen Operator "|"
zu einer Ganzzahl kombinieren(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions
Um dann zu überprüfen, ob sie eine bestimmte Berechtigung haben, verwenden Sie den bitweisen Operator "&"
($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
Wenn Sie das tun würden, würden Sie nur einen DB-Eintrag für jeden Satz von Berechtigungen benötigen.