8 Stimmen

Implementieren von Berechtigungen in PHP

Ich habe versucht, dies mehrmals ohne Glück zu tun. Nachdem ich diesen Beitrag gelesen habe, hat es mich interessiert, dies erneut zu tun. Kann mir also jemand sagen, warum das Folgende nicht funktioniert?

1voto

Paige Ruten Punkte 164391

@mk: (2 | 4) evaluiert zu 6.

1voto

conmulligan Punkte 6945
$gast = 1;
$editor = 2;
$admin = 4;

$benutzer = $editor;

if ($benutzer == $editor || $benutzer == $admin) {
    echo "Test";
}

1voto

Paige Ruten Punkte 164391

Toll, das scheint der beste Weg zu sein, um Berechtigungen in einem CMS zu verwalten. Ja? Nein?

Vielleicht, ich habe es noch nie so gemacht. Was ich gemacht habe, ist bitweise Operatoren zu verwenden, um eine ganze Reihe von "ja oder nein" Einstellungen in einer einzigen Zahl in einer einzelnen Spalte in der Datenbank zu speichern.

Ich denke, für Berechtigungen würde dieser Weg gut funktionieren, wenn man Berechtigungen in der Datenbank speichern möchte. Wenn jemand einen Inhalt veröffentlichen möchte und nur möchte, dass Admins und Editoren ihn sehen, muss man einfach das Ergebnis von

 ($editor | $admin)

in die Datenbank speichern und dann zur Überprüfung so etwas machen wie

 if ($user & $database_row['permissions']) {
       // Inhalt anzeigen
 } else {
       // Berechtigungsfehler anzeigen
 }

0voto

Nach meiner Meinung skaliert das nicht gut. Ich habe es tatsächlich noch nicht in einem größeren Projekt ausprobiert, aber ein CMS klingt viel zu kompliziert, um dies zu verwenden.

0voto

Till Punkte 21912

Es hängt immer davon ab, was du brauchst. Wenn du das Zend Framework bereits kennst, würde ich der Empfehlung für Zend_Acl/_Auth zustimmen, die bereits gemacht wurde. Aber denke daran, dass wahrscheinlich jedes Framework mit einem ähnlichen Komponente geliefert wird.

Das andere, was mir in den Sinn kommt, ist LiveUser. Ich arbeite auch gerne damit.

Ich denke, du kannst so ziemlich alles machen und obwohl dein Ansatz sehr einfach aussieht, ist er auch begrenzt, da du (durch all diese if()'s) einen Großteil der ACL-Logik direkt in die Mitte deiner Anwendung einfügst. Das ist nicht das Beste, um es einfach und erweiterbar zu halten. ;)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X