• Liebe Foris,

    ich habe einen Menüpunkt, der auf pw-geschützte Seiten führt.
    Dank Monika *nochmal Espresso rüberschick* habe ich über das Plugin „Codeschnipsel“ einen Code eingefügt, der die korrekte Eingabe des Passwortes auf die Child-Sites vererbt, sodass man das PW nur einmal auf der zugehörigen Elternseite eingeben muss.

    Nun ist es ja wohl so, dass durch die Cookie-Setzung das PW eine Zeitlang gespeichert wird und das möchte ich verhindern.
    Habe in diesem Forum auch einen passenden Thread gefunden

    https://de.forums.wordpress.org/topic/passwort-timeout-setzen?replies=15

    und die Lösung umgesetzt, indem ich folgenden Code in mein Plugin eingesetzt habe:

    add_action( 'wp', 'post_pw_sess_expire' );
        function post_pw_sess_expire() {
        if ( isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) )
        // Setting a time of 0 in setcookie() forces the cookie to expire with the session
        setcookie('wp-postpass_' . COOKIEHASH, '', 0, COOKIEPATH);
    }

    Nun habe ich aber das gleiche Problem, das im o.a. Thread beschrieben wurde:
    Ich gehe auf die Einloggseite für das PW und gebe es ein. Die Seite öffnet sich. Nun klicke ich eine zugehörige, auch mit dem gleichen PW gesicherte, Kinderseite an und werde aufgefordert, das PW nochmals einzugeben. Mache ich dies, werde ich wieder auf die Einloggseite umgeleitet, ohne dass sich die Kinderseite geöffnet hat.
    Habe den Code auch gefühlte 100mal gegengelesen, um Tippfehler zu finden, kann aber nichts feststellen.
    Was mache ich falsch?
    Ach ja, Cache habe ich zum Ausprobieren vorher gelöscht.

    Viele Grüße,
    Chakotay

Ansicht von 6 Antworten – 1 bis 6 (von insgesamt 6)
  • naja wenn das Cookie gar keine Zeit da sein darf, dann ist dieses Verhalten absolut logisch 🙂

    das Cookie ist nötig, sonst können die Kindseiten nicht geöffnet werden…wozu möchtest du dieses nötige Cookie verhindern?

    Themenersteller chakotay

    (@chakotay)

    Ohne das Cookietimeout habe ich beispielsweise folgendes Szenario:

    Ein Besucher loggt sich mit dem Passwort, das ich ihm gegeben habe, auf die Elternseite (= Start geschützter Bereich) ein. Von da navigiert er durch die Kindseiten, ohne sein Passwort erneut eingeben zu müssen.
    Soweit so gut.

    Aaber: Er schließt den Browser und beendet seine Session.
    Nun kommt der Enkel des o.a. Besuchers am gleichen Tag und möchte „ein wenig im Internet surfen“. Er öffnet den Browser und gibt aus irgendeinem Grund die Adresse meiner Seite ein. Falls er nun die Elternseite des geschützten Bereichs anklickt, kann er dort herumsurfen, ohne dass das Passwort erneut eingegeben werden muss, da das Cookie ja noch gespeichert ist (ich meine, ich hätte gelesen, dass die normale Zeit des Speicherns 10 Tage beträgt, bin mir aber nicht sicher).

    Und dieses möchte ich verhindern.

    Wunschszenario meinerseits:
    Opa surft in meinem geschützten Bereich wie oben beschrieben mit einmaliger Eingabe des Passwortes. Schließt den Browser.
    Enkel kommt anschließend und geht auf meine Seite. Klickt die Elternseite des geschützten Bereichs an, müsste aber nun das Passwort eingeben, was er nicht kennt.

    Sorry für dieses Bild, aber ich versinke in meinem WordPress und habe mir gerade zur Stärkung einen Sekt aufgemacht. 😀

    naja wenn das Cookie gar keine Zeit da sein darf, dann ist dieses Verhalten absolut logisch 🙂

    Nein, denn:

    Hat der Parameter den Wert 0 oder ist er nicht gesetzt, verfällt das Cookie am Ende der Session (wenn der Browser geschlossen wird).

    Siehe: http://php.net/manual/de/function.setcookie.php

    So sollte es also eigentlich gehen. Hast du einen Testcase, wo man sich das anschauen und testen kann?

    Gruß, Torsten

    Themenersteller chakotay

    (@chakotay)

    Öhm, gerne, aber ich habe keinen Schimmer, wie ich einen Testcase erstelle. Gibst du mir kurz einen Tipp, dann mache ich es gerne!
    Ich habe die Site unter einem „Maintenence Mode“, den ich abschalten könnte, aber du wirst dann nur völlig unfertiges Zeug sehen.

    Themenersteller chakotay

    (@chakotay)

    Ich habe das Problem lösen können, eher durch Zufall bzw. unkonventionell:

    Irgendwie hat’s den Code im Plugin „Codeschnipsel“ zerschossen. -> „white side of death“… Konnte das Plugin nach der Löschung auch nicht mehr installieren und aktivieren.
    Wollte dann auf das Plugin „My Custom Functions“ ausweichen, das ich früher auch installiert und später dann im wp-content in den von mir angelegten Plugin-Temp-Ordner verschoben hatte.

    Konnte mich ohne diese beiden Plugins wieder ins Dashboard einloggen, erhielt aber stets bei der versuchten Neuinstallation und Aktivierung von „My Custom Functions“ die Meldung, dass es nicht aktiviert werden kann, weil es einen fatalen Fehler erzeugt. Für mich nicht nachvollziehbar, weil mein altes Plugin ja im temp-Ordner auf Halde gelegt war und das „frische“ Plugin ja noch keinen von mir eingegebenen Code beinhaltet. Mmh, aber ich habe keine Ahnung von der Materie – die Fachleute hier könnten dazu bestimmt etwas sagen.

    Nun, daraufhin habe Ich die my-custom-functions.php geöffnet und alle Codes gelöscht. Anschließend konnte ich das Plugin wieder aktivieren und die Codes neu eingeben.

    Und auch der Cookie-Timeout-Code funktioniert seitdem wieder einwandfrei.

    Alles wieder gut – zum Glück…

    Vllt. hilft die Beschreibung mal jemandem.

    Grüße,
    Chakotay

    P.S. Sorry, dieser Thread hätte auch gut ins Plugin-Forum gepasst, aber das wusste ich bei der Fragestellung noch nicht.

    Themenersteller chakotay

    (@chakotay)

    Ich muss meinen als „gelöst“ gekennzeichneten Thread leider wieder hochholen. Kriege die Probleme hinsichtlich des cookie-timeouts für passwort-geschützte Seiten nicht in den Griff.
    Beschreibung:
    Folgendes wird gewünscht: Passwortgeschützte Seiten (Eltern- und Kinderseiten) sollen nach einmaliger Eingabe des PWs für die laufende Browsersitzung frei zugänglich sein, also ohne erneute Eingabe. Nach Schließen des Browser soll das PW wieder abgefragt werden.
    Ich nutze das Plugin „My Custom Functions“. Dort sind diesbezüglich zwei Code-Schnipsel vorhanden:
    1. Passwort der Elternseite an die Kinderseite vererben:

    function password_protect_children( $post ){
    	foreach( get_post_ancestors( $post ) as $parent ) {
    		if( post_password_required( $parent ) ) {
    			$location = get_permalink( $parent );
    			wp_redirect( $location );
    			exit;
    		}
    	}
    }
    add_action( 'template_redirect', 'password_protect_children' );

    2. Cookie nach Schließung des Browsers löschen, damit das PW beim erneuten Öffnung auch wieder eingegeben werden muss und nicht die üblichen – ich glaube – 10 Tage auf dem Rechner verbleibt:

    add_action( 'wp', 'post_pw_sess_expire' );
        function post_pw_sess_expire() {
        if ( isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) )
        setcookie('wp-postpass_' . COOKIEHASH, '', 0, COOKIEPATH);
    }

    Nun passiert jedoch Folgendes: Wenn ich nach Eingabe des Passwortes auf der Elternseite anschließend eine Kinderseite auswähle, werde ich zurück zur Passworteingabe der Elternseite geleitet. Ich kann also eine Kinderseite gar nicht auswählen.
    Ich vermute mal, dass sich beide Schnipsel „beißen“, oder?

    Ich habe daraufhin den ersten Code-Schnipsel deaktiviert, da die Unterseiten per Menü sowieso nicht erreichbar sind. Man kann nur die Elternseite auswählen und da wird ja das Passwort abgefragt, wäre also bei den Kinderseiten nicht unbedingt notwendig.
    Nun passiert Folgendes:
    Ich kann problemlos nach Eingabe des PWs auf der Elternseite die Kinderseiten öffnen, aber sobald ich wieder auf die Elternseite zugreife, muss ich erneut das PW eingeben, obwohl ich den Browser zwischenzeitlich nicht geschlossen habe. Das ist aufgrund der Seitenstruktur sehr ungünstig.

    Ich bin ziemlich ratlos.
    Mein Lösungsansatz wäre nun vielleicht, das Cookie-timeout nicht auf Null zu setzen, sondern auf eine Stunde. Leider weiß ich nicht, wie der Codeschnipsel nun aussehen muss.
    Kann mir einer helfen? Oder hat jemand eine Idee, warum das nicht so funktioniert, wie ich oben als Wunsch formuliert habe?

    Schade, dass eine einfache Lösung nicht in WP vorhanden ist, denn wer Seiten mit einem WP-eigenen Passwort versieht, möchte sicherlich ebenfalls nicht, dass per Cookie das PW lange gespeichert bleibt…

    Ich bedanke mich jetzt schon mal für eure Mühe!
    Chakotay

    P.S. Kann das „resolved“ leider nicht mehr verändern und hoffe, dass trotzdem jemand liest…

Ansicht von 6 Antworten – 1 bis 6 (von insgesamt 6)

Das Thema „cookie-timeout für pw-gesch. Seiten“ ist für neue Antworten geschlossen.