Zugangsberechtigung/Zugangsschutz für statische Seiten und Weblogs

In dieser Anleitung geht es darum, die in WordPress integrierte Rollenverwaltung, für den geziehlten Schutz von Seiten und Beitragsinhalten zu nutzen.

Als erstes habe ich hierzu den Role-Manager installiert (http://redalt.com/wiki/Role+Manager). Mit diesem Plugin ist es ganz einfach möglich bestehende Rollen zu administrieren und neue anzulegen.

Bei mir sind die Rollen administrator und leser angelegt.

Als weiters ist Exec-PHP (http://bluesome.net/post/2005/08/18/50/) notwendig. Dieses Plugin hilft PHP Code in Beiträge und Seiten auszuführen.

Nun habe ich um die Rollenverteilung für alle Seiten nutzen zu können, im Header(HTML

) der header.php folgenden Code integriert:

<?php /* Rollenverteilung vornehmen */ ?>
<?php = get_role(‚administrator‘); if ( !== NULL) (‚Admin‘); ?>
<?php = get_role(‚leser‘); if ( !== NULL) (‚Leser‘); ?>

Was der Code macht ist ganz simpel. Ist die aktuelle Rolle des Benutzers „administrator“ dann setzt er den Benutzernamen „Admin“. Bei der Rolle „leser“ den Benutzernamen „Leser“.

So der nächste Schritt.

Es geht nun darum im dem zu schützenden Dokument die passenden Einträge vorzunehmen.

<?php if ( current_user_can(‚Leser‘) || current_user_can(‚Admin‘)) { ?>
   geschützer Inhalt
<?php } else { ?>
    <?php include ’nologin.php‘ ?>
<?php } ?>

So nun wieder die Erklärung des PHP Codes.

Die erste IF Abfrage prüft ob der aktuelle User „Leser“ oder „Admin“ ist. An dieser Stelle können natürlich noch weitere User oder nur ein User abgefragt werden. Hierzu muss lediglich „|| current_user_can(‚Admin‘)“ hinzugefügt oder weggelassen werden. (‚Admin‘ ist durch den entsprechenden User-Namen zu ersetzen)

Die zweite Zeile enthält nun den zu schützenden Teil des Dokuments. Hierhin kann belieber Text oder Code geschrieben werden.

Die dritte Zeile enthält nur den ELSE Aufruf.

In der vierten Zeile wird es wieder Interessant. Hier kann nun der ungeschützte Text/Code hinterlegt werden. Ich habe mir hier ein PHP Dokument namens nologin.php angelegt, in dem ein direkter Login möglich ist. Den Inhalt dieses Dokuments erläutere ich in einem separaten Blog (wer es eilig hat kann mir natürlich auch Emailen, dann schicke ich den Code zu). Das PHP Dokument habe ich per INCLUDE eingefügt.

Als letzes kommt schließlich noch der Abschluß.

Jetzt probieren wir aus ob es funktioniert. Als erstes Ausloggen. Dann die geschützte Seite betreten. Dort müsste jetzt der im ELSE Zweig hinterlegte Text oder Code kommen. Hat es geklappt kommt der nächste Versuch. Wir loggen uns ein und besuchen erneut die geschütze Seite. Nun sollte dort der Inhalt aus dem IF Zweig erscheinen.

Mögliche Fehlerquellen:

  • Parse Error
  •    -> beim Kopieren sind Sonderzeichen kopiert worden. Probiere den Text per Hand auf deine Seite zu übertragen

  • ich kann keinen PHP Code eingeben bzw. er wird nicht akzeptiert
  •    -> Schalte den WYSIWYG Editor aus (unter Benutzer -> „Benutz den WYSIWYG-Editor beim Schreiben“)
       -> das EXEC-PHP Plugin ist nicht richtig installiert

  • mein PHP Code wird immer verstümmelt
  •    -> Schalte folgende Funktion unter Einstellungen / Schreiben – „WordPress soll falsch verschachteltes XHTML automatisch korrigieren“ ab

So, viel Spaß damit!

P.S. Wer Fragen oder Probleme hat, kann gerne über die Kommentarfunktion nachfragen.

Vorheriger Beitrag

Traumhochzeit von Anita und Walter (Update2: neue Bilder)

Nächster Beitrag

In geheimer Mission

  1. schwopper

    Hallo Andi,

    das ist eine 1a-Beschreibung des Vorgangs, hab das nur leider nicht verstanden! (Seite war auch sicher nicht für mich bestimmt, aber na, ja).
    Aber damit du auch mal einen Kommentar abbekommst, lobe ich dich eben!!

    Vielleicht kannst du mir ja mal beim nächsten Treffen erklären, wie ich mich da jetzt einlogge, um in die Bildergalerie zu kommen.
    Bis denn, Grüße Melli

Schreibe einen Kommentar

Läuft mit WordPress & Theme erstellt von Anders Norén