2017-03-02 3 views
1

Ich habe Probleme mit einem Wordpress Plugin, an dem ich gerade arbeite. PHP-Sitzungen verhalten sich nicht konsistent. Ich habe die folgenden Artikel zu lesen:Wordpress Plugin Sessions funktionieren nur, wenn Sie eingeloggt sind

https://wordpress.stackexchange.com/questions/121144/session-in-wordpress-plugin-development

https://silvermapleweb.com/using-the-php-session-in-wordpress/

Und viele mehr, die den gleichen Rat zu Beginn der Sitzung mit dem Init-Haken geben.

Ich habe dies in meiner Plugin implementiert:

add_action('init', 'set_session', 1); 

function set_session(){ 
    if(!session_id()){ 
     session_start(); 
    } 
} 

Die Sitzungen seltsam still verhalten, so hat ich einen Test erstellt, um zu sehen, ob die Sitzungen festgelegt werden.

$_SESSION['GuestID'] = 'test'; 

if(!session_id()){ 
    echo 'Session Not Started'; 
} else{ 
    if(isset($_SESSION['GuestID'])){ 
     echo 'Guest ID From Session: '.$_SESSION['GuestID']; 
    } else{ 
     echo 'Guest ID not set in Session!'; 
    } 
} 

Als ich dies ausführen, wird die Gast-ID 'Guest ID Von Session: Test' zurückgegeben, aber wenn Sie die Sitzung von einer anderen Seite zuzugreifen reload versuchen, Sie erhalten die ‚Guest-ID in der Sitzung nicht gesetzt! " Botschaft. Für mich bedeutet dies, dass die Sitzung gestartet wurde, aber aus irgendeinem Grund speichert sie nicht meine Sitzungsdaten.

Ich kann auch sehen, dass kein Cookie für die Session-ID gespeichert ist.

Der seltsame Teil von allem, ist, dass, wenn ich mich an den Wordpress-Admin anmelden, die PHP-Session-ID in einem Cookie gespeichert wird, und die Sitzungen verhalten sich wie erwartet!

Was könnte das verursachen? Und wie kann ich das Problem lösen?

Antwort

1

Nach einigen Nachforschungen scheint es, dass einige Wordpress-optimierte Hosting-Dienste über ein hohes Maß an Caching verfügen, das statischen Inhalt an den Browser liefert, ohne PHP bei jeder Anfrage auszuführen. Diese Caching-Dienste werden nicht ausgeführt, wenn sie im Adminbereich der Wordpress-Site angemeldet sind, was zu einer inkonsistenten Sitzungsleistung führt. Sitzungen funktionierten nicht beim Zugriff auf die zwischengespeicherten Seiten und funktionierten, wenn sie nicht zwischengespeichert wurden.

Mein Hosting-Provider verwendet Varnish und die Deaktivierung von Varnish für die betreffende Website hat das Problem behoben.

+0

Vielen Dank! Ich stieß auf das gleiche Problem mit Cloudways und behinderte Varnish das Problem. – b0nd

Verwandte Themen