WordPress Login unterbinden

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Kommentare

  
  1. Tom sagt:

    Ich finde die erste Version praktikabler für lokale Installationen. Cookies werden bei mir nämlich beim Browser schließen alle gelöscht.
    Und auch Danke für den Kommentartrick. Wieder ein paar Klicks weniger. 🙂

  2. linguasite sagt:

    Prima, das spart während der Entwicklung einiges Getippe.
    Die Variante mit dem Auth-Cookie eigent sich auch, wenn der WP-Admin per http-auth geschützt ist. Über den Wert $_SERVER['REMOTE_USER'] lässt sich der Benutzername abfragen, mit dem der User sich anmeldet. Dieser sollte so auch in der User-Tabelle von WP vorhanden sein. Dann User-ID abfragen und mit wp_validate_auth_cookie zurückgeben.

  3. Ralf sagt:

    Man kann sich auch eine kleine PHP-Datei schreiben die die Daten per POST-Request an wp-login.php schickt. Benutzername (log) und Passwort (pwd) wären dabei fest einprogrammiert. Die Datei speichert man sich dann halt unter einem nicht zu leicht erratbaren Namen (Bsp. my_secret_login_Am3Oq5.php) und speichert sie sich als Bookmark. Der Aufruf des Blogs erfolgt dann nicht mehr über http://example.com/blog, sondern über http://example.com/my_secret_login_Am3Oq5.php.
    Für Testzwecke könnte man sich die Lösung so erweitern, dass alle registrierten Benutzer aufgelistet werden und man sich mit einem Klick anmelden kann. Für Entwickler die zum Testen häufiger den Benutzer wechseln müssen eine relativ komfortable Lösung. Kommt ohne Plugin oder Fummelei an der functions.php aus. Vor allem lässt sich diese Lösung auch auf andere Software übertragen.

  4. Tom sagt:

    So Ralf, dann schnell ein Script oder muss ich es mir selber machen? 😉 Aber die Idee ist sehr interessant, gerade beim testen von unterschiedlichen Rollen.

  5. Ralf sagt:

    Der Kommentarbereich ist nicht so gut für Code-Beispiele geeignet. < & > zicken da immer rum.

    Mit HTML ist es ja ganz einfach:

    
    <html>
    <body>
    <form action="/wp-login.php" method="POST">
     <input type="hidden" name="log" value="Tom" />
     <input type="hidden" name="pwd" value="IchBin1Huhn&HabVielZuTuhn" />
     <input type="hidden" name="redirect_to" value="http://www.example.com" />
     <input type="submit" value="Anmelden" />
    </form>
    </body>
    </html>
    

    Für eine Anmeldung ohne jeglichen Klick, brauchst du dann halt noch etwas JavaScript das für dich beim OnLoad das Formular abschickt.

    Wenn du mehrere Benutzer hast, bastelst du halt noch etwas PHP drum herum:

    
    <?php
    $benutzer = array('Tom' => 'IchBin1Huhn&HabVielZuTuhn', 'Frank' => 'Fjörksfall3000m', 'Ralf' => 'Spongebob2000');
    
    echo '<html><body>';
    
    foreach($benutzer as $name => $pass){
    echo '<form action="/wp-login.php" method="POST">
     <input type="hidden" name="log" value="'.$name.'" />
     <input type="hidden" name="pwd" value="'.$pass.'" />
     <input type="hidden" name="redirect_to" value="http://www.example.com" />
     <input type="submit" value="'.$name.' Anmelden" />
    </form>';
    }
    echo '</body></html>';
    

    Das versteckte Feld mit redirect_to sorgt dafür das du auf der Startseite landest. Lässt du es weg, landest du im Backend.

  6. Tom sagt:

    Oh danke, wie zuvorkommend. Werde ich die Tage gleich mal ausprobieren.
    PS: mit dem viel zu tun stimmt, aber das Huhn haste die ausgedacht! 😉

  7. Martin sagt:

    Ich hoffe, es ist nicht unverschämt, wenn ich mir diese getippten Zeilen voller Weisheit für meinen eigenen Blog zunutze mache, oder?
    Lg martin

  8. Paul sagt:

    Eine wunderbare Idee, sich den Login zu sparen!

    Da ich an mehreren Seiten arbeite, wird mir der modifizierte Code vom Ralf eine Menge "Login-Getippe" ersparen:

    document.f1.submit();

  9. rob sagt:

    Deine Funktion mit der Session lässt sich doch auch als Plugin nutzen, oder?

    Aufgebaut ist sie zumindest wie eins. Und zum lokalen testen dürfte das auch egal sein 🙂

  10. uncleboob sagt:

    Ahh genau diese Lösung habe ich gesucht. Ich habe hier schon mal einen guten Tipp gefunden, den mit den Konstanten in WordPress.

    Aber der ist ideal für Uni Projekte mit WordPress.

    Wieder mal vielen Dank

  11. rob sagt:

    Ah Cool. Dann liese es sich ja auch realisieren mittels wp_validate_auth_cookie() und dem Unterbau der Session Funktion, das man sich den Login via Dropdown auswählen kann. Zum Beispiel für den Fall das man testen will ob der Autor genau das gleiche sieht wie der Admin etc

  12. Otto sagt:

    Hier lernt man einfach nie aus, immer wieder neue Kniffe um die Fähigkeiten von WordPress zu erweitern.

  13. Sarina sagt:

    Hey =) vielen Dank für deine Darstellung, hat mir echt weitergeholfen. Du erklärst immer alles so verständlich, das gefällt mir. Mach weiter so 🙂

  14. Raffael sagt:

    Kann man auf diese Weise Attacken auf den eigenen Blog vermindern?

    • @Raffel: nein, dies sorgt dafür, dass der Login im Blog nicht mehr notwendig ist, also eher was für Entwickler oder eine Lösung, die man damit erstellen kann.

  15. Thomas sagt:

    Eventuell sehe ich das falsch, aber ich nutze dafür immer eine .htaccess Datei ! Passwort mit 20 Zeichen, passt schon 🙂

  16. Thomas sagt:

    Vielen Dank für diesen Tipp. Ich wusste gar nicht, dass sowas möglich ist bzw. wäre ich niemals in der Lage gewesen das selbst zu Coden. ich werde mich da mal reinfuchsen. Hoffentlich kriege ich es hin 🙂

  17. Florian sagt:

    Hallo,

    ich würde gerne den Beitrag von Ralf (#5) aufgreifen.

    Hat das Stück Code jemand weiterbearbeitet? Benötige eine so beschriebene php Datei die Logindaten speichert und beim Aufruf direkt den wp-login erledigt und im Dashboard landet. Bekomme es nur selbst nicht hin 🙁

  18. Ralf sagt:

    OK, für alle die ihr Blog der kompletten Online-Gemeinschaft zugänglich machen wollen, hier der 15-Zeiler mit WP-Bordmitteln:

    <?php
    require( dirname(__FILE__) . '/wp-load.php' );

    $redirect_to = admin_url();
    $credentials['user_login'] = ''; // Usernamen hier rein
    $credentials['user_password'] = ''; // Passwort hier hin

    $user = wp_signon($credentials);

    if ( is_wp_error($user) ) {
    die( 'Mooooooooooo..... :(');
    } else {
    wp_safe_redirect( $redirect_to );
    exit;
    }

    Oder komprimiert als 2-Zeiler 😉
    <?php require( dirname(__FILE__) . '/wp-load.php' );
    is_wp_error( wp_signon( array( 'user_login'=>'admin', 'user_password'=>'12345' ) ) ) ? die('Mooo... :(') : wp_safe_redirect( admin_url() );

  19. Florian sagt:

    Dankeschön 😉

    Verwende es übrigens in einem geschlossenen Mitgliedsbereich der ebenfalls mit Passwort geschützt ist, keine Angst, die Gefahr ist natürlich bekannt!

© 2016, since 2005 bueltge.de [by:ltge.de] · Theme is built by ThemeShift