PHP Active Session-Warnung in WordPress

Lesezeit: 3 Minuten

Ich weiß, dass diese Frage in diesem Forum häufig gestellt wird, aber keine der vorgeschlagenen Lösungen hat für mich funktioniert. Im Grunde bin ich ein WordPress-Plugin-Entwickler und entwickle ein Plugin, dessen Sitzung in der Init-Datei beginnt, aber geschlossen wird, wenn der Client seine / ihre schließt Browser, und es ist notwendig, die Sitzung offen zu halten. Wie kann ich in diesem Fall diese Warnung entfernen? Vielleicht sollte ich etwas anderes als die Sitzung oder das, was Sie vorschlagen, verwenden.

Bisher gibt es verschiedene Lösungsvorschläge wie Use

if ( !session_id() ) {
session_start( [
    'read_and_close' => true,
] );

}

aber mit dieser Technik kann ich niemals Sessions in meinem Plugin verwenden, und die gesamte Funktionalität bleibt auf dem Boden.

Jede Hilfe in dieser Hinsicht wäre sehr willkommen.

Danke

  • “Wie kann ich diese Warnung loswerden” – welche Warnung? Bitte Fehlermeldungen zitieren wörtlich.

    – CBroe

    13. Januar um 12:39 Uhr

  • @cBroe hier ist die Warnung 1. Eine PHP-Sitzung wurde durch einen Funktionsaufruf session_start() erstellt. Dies stört die REST-API und Loopback-Anforderungen. Die Sitzung sollte durch session_write_close() geschlossen werden, bevor HTTP-Anforderungen gestellt werden. 2. Die REST-API ist eine Möglichkeit, wie WordPress und andere Anwendungen mit dem Server kommunizieren. Ein Beispiel ist der Block-Editor-Bildschirm, der sich darauf stützt, um Ihre Posts und Seiten anzuzeigen und zu speichern. Die REST-API-Anforderung ist aufgrund eines Fehlers fehlgeschlagen. Fehler: cURL-Fehler 28: Zeitüberschreitung nach 10001 Millisekunden mit 0 empfangenen Bytes (http_request_failed)

    – zain

    13. Januar um 12:46 Uhr

PHP Active Session Warnung in WordPress
O. Jones

WordPress-Plugin- oder Theme-Entwickler können keine PHPs verwenden Sitzung Subsystem, wie Sie entdeckt haben.

Wenn Sie eine Art globalen Kontext speichern müssen, damit Ihr Plugin funktioniert, verwenden Sie WordPress add_option() Funktion, um es am Ende jeder Operation zu speichern. Sie können Ihren Kontext mit abrufen get_option().

Wenn Sie einen Kontext pro Benutzer benötigen, verwenden Sie add_user_meta() um es zu speichern und get_user_meta() um es abzurufen. So was:

$id = get_current_user_id();
$myContext = get_user_meta( $id, 'my_plugins_meta_tag_name' );
...
add_user_meta( $id, 'my_plugins_meta_tag_name', $myContext);

WordPress verwendet eine Datenbanktabelle, um diese Art von Optionen zu speichern. Einige Sites stellen einen Objekt-Cache vor die Tabelle. Aber mit diesen APIs tun Sie, was Sie tun möchten.

Ziehen Sie bitte den Deaktivierungshaken Ihres Plugins in Erwägung delete_option() um diesen Speicher zu bereinigen. Und wenn Sie den Kontext pro Benutzer verwenden, ziehen Sie bitte die Verwendung von in Betracht delete_user_meta() um Ihr user_meta-Element von allen zu entfernen.

$users = get_users( array( 'fields' => array( 'ID' ) ) );
foreach($users as $user){
    delete_user_meta ( $user->ID, 'my_plugins_meta_tag_name' );
}

Was vertrauliche Informationen betrifft, bietet WordPress keinen anderen Ort, um sie zu platzieren. Und wenn Sie Sitzungen verwenden, müsste PHP es auch irgendwo ablegen. Standardmäßig legt PHP Sitzungsdaten im Dateisystem des Servers ab. Deshalb WordPress hasht Benutzerpasswörter bevor Sie sie speichern.

  • @Jones danke für den Vorschlag, ich habe dasselbe gedacht, aber wird empfohlen, vertrauliche Informationen in den WP-Optionen zu speichern?

    – zain

    13. Januar um 13:08 Uhr

  • Vielen Dank @O.Jones für die ausführliche Antwort.

    – zain

    13. Januar um 13:47 Uhr

993910cookie-checkPHP Active Session-Warnung in WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy