WordPress Native PHP Sessions

Beschreibung

Der WordPress-Core verwendet keine PHP-Sessions, aber manchmal sind sie für deinen Anwendungsfall, ein Plugin oder ein Theme erforderlich.

Dieses Plugin implementiert die nativen Session-Handler von PHP, die von der WordPress-Datenbank unterstützt werden. Dadurch können Plugins, Themes und benutzerdefinierter Code sicher PHP $_SESSIONs in einer verteilten Umgebung verwenden, in der die standardmäßige Speicherung von temporären PHP-Dateien nicht funktioniert.

Bitte beachte, dass die primäre Entwicklung auf GitHub stattfindet. Wenn du dazu beitragen möchtest:

https://github.com/pantheon-systems/wp-native-php-sessions

Mitwirken

Der beste Weg, zur Entwicklung dieses Plugins beizutragen, ist die Teilnahme am GitHub-Projekt:

https://github.com/pantheon-systems/wp-native-php-sessions

Pull-Requests und Fragen sind willkommen!

Du wirst feststellen, dass zwei Testsätze mit zwei verschiedenen Diensten laufen:

  • Travis CI führt die Testsuite PHPUnit aus.
  • Circle CI führt die Testsuite Behat gegen eine Pantheon-Seite aus, um die Kompatibilität des Plugins mit der Pantheon-Plattform sicherzustellen.

Beide Testsuiten können lokal ausgeführt werden, wobei der Umfang der Einrichtung variiert.

PHPUnit erfordert die Testsuite WordPress PHPUnit test suite, und Zugriff auf eine Datenbank mit dem Namen wordpress_test. Wenn du die Testsuite noch nicht lokal konfiguriert hast, kannst du bash bin/install-wp-tests.sh wordpress_test root '' localhost ausführen.

Behat benötigt eine Pantheon-Seite. Sobald du die Seite erstellt hast, musst du den Terminus installieren und die Umgebungsvariablen TERMINUS_TOKEN, TERMINUS_SITE und TERMINUS_ENV setzen. Du kannst dann ./bin/behat-prepare.sh ausführen, um die Seite für die Testsuite vorzubereiten.

Problembehandlung

Wenn du einen Fehler wie „Fatal error: session_start(): Failed to initialize storage module:“ oder „Warning: ini_set(): A session is active.“ erhältst, dann hast du wahrscheinlich ein Plugin, das eine Session startet, bevor WP Native PHP Sessions geladen wird.

Erstelle eine neue Datei in wp-content/mu-plugins/000-loader.php und füge die folgenden Zeilen ein, um dieses Problem zu beheben:

<?php
require_once WP_PLUGIN_DIR . '/wp-native-php-sessions/pantheon-sessions.php';

Dieses mu-Plugin lädt WP Native PHP Sessions vor allen anderen Plugins, während du weiterhin den WordPress-Plugin-Updater verwenden kannst, um das Plugin auf dem neuesten Stand zu halten.

Installation

  1. Lade das Plugin in das /wp-content/plugins/-Verzeichnis hoch
  2. Aktiviere das Plugin im „Plugins“-Menü in WordPress

Das war’s!

FAQ

Warum kein anderes Session-Plugin verwenden?

Dieses Plugin implementiert die eingebauten PHP-Sitzungsbehandlungsfunktionen, anstatt etwas Benutzerdefiniertes einzuführen. Auf diese Weise kannst du die eingebaute Sprachfunktionen wie $_SESSION superglobal und session_start() in deinem Code verwenden. Alles andere funktioniert dann von alleine.

Warum die Sessions in der Datenbank speichern?

Die Fallback-Standardfunktionalität von PHP besteht darin, dass Sitzungen in einer temporären Datei gespeichert werden können. Das ist es, was der meiste Code, der Sessions aufruft, standardmäßig verwendet, und in einfachen Anwendungsfällen funktioniert, weshalb so viele Plugins dies auch nutzen.

Wenn du beabsichtigst, deine Anwendung zu skalieren, sind lokale temporäre Dateien eine gefährliche Wahl. Sie werden von den verschiedenen Instanzen der Anwendung nicht gemeinsam genutzt, was zu einem erratischen Verhalten führt, dass das Debuggen erschweren kann. Durch ihre Speicherung in der Datenbank wird der Zustand der Sitzungen von allen Anwendungsinstanzen gemeinsam genutzt.

Rezensionen

5. August 2020
Native PHP Sessions fixed all errors (curl errors) in my WP installation! Now wordpress shows no errors in the page status but "Top Job" 🙂 Thank you so much!
Lies alle 12 Rezensionen

Mitwirkende & Entwickler

„WordPress Native PHP Sessions“ ist Open-Source-Software. Folgende Menschen haben an diesem Plugin mitgewirkt:

Mitwirkende

„WordPress Native PHP Sessions“ wurde in 1 Sprache übersetzt. Danke an die Übersetzerinnen und Übersetzer für ihre Mitwirkung.

Übersetze „WordPress Native PHP Sessions“ in deine Sprache.

Interessiert an der Entwicklung?

Durchstöbere den Code, sieh dir das SVN Repository an oder abonniere das Entwicklungsprotokoll per RSS.

Änderungsprotokoll

1.2.1 (September 17th, 2020)

  • Die Textdomäne des Plugins muss mit dem WordPress.org-Slug identisch sein [#169].

1.2.0 (May 18th, 2020)

  • Vermeidet die Verwendung von Cookies für Sessions, wenn WP-CLI ausgeführt wird [#154].

1.1.0 (April 23rd, 2020)

  • Vermeidet die Initialisierung von PHP-Sessions bei der Ausführung von cron [#149].

1.0.0 (March 2nd, 2020)

  • Das Plugin ist stabil.

0.9.0 (October 14th, 2019)

  • Refaktoriert die Session-Callback-Logik in der Session_Handler-Abstraktion, um den PHP-Hinweis in PHP 7.3 zu beheben [#135].

0.8.1 (August 19th, 2019)

  • Korrigiert die Behandlung des ‚X-Forwarded-For‘-Headers in get_client_ip_server() [#126].

0.8.0 (August 13th, 2019)

  • Respektiert verschiedene HTTP_*-Quellen für die Client-IP-Adresse [#122].

0.7.0 (April 3rd, 2019)

  • Fügt eine Sicherheitsüberprüfung hinzu, die $wpdb wiederherstellt, wenn es fehlt.

0.6.9 (May 15th, 2018)

  • Stellt sicher, dass _pantheon_session_destroy() einen Rückgabewert verwendet.

0.6.8 (May 4th, 2018)

  • Wechselt zu E_USER_WARNING anstelle von E_WARNING, wenn Fehler ausgelöst werden.

0.6.7 (April 26th, 2018)

  • Deaktiviert das Laden des Plugins, wenn WP_INSTALLING gesetzt ist, weil die Erstellung der Sitzungstabelle den Installationsprozess unterbricht.

0.6.6 (March 8th, 2018)

  • Stellt die Sitzungsinstanziierung wieder her, wenn WP-CLI ausgeführt wird, da die Nichtausführung andere Probleme verursacht.

0.6.5 (February 6th, 2018)

  • Deaktiviert die Session-Instanziierung, wenn defined( 'WP_CLI' ) && WP_CLI, weil die Sessions unter CLI nicht funktionieren.

0.6.4 (October 10th, 2017)

  • Löst PHP-Fehler aus, wenn das Plugin die Session nicht in die Datenbank schreiben kann.

0.6.3 (September 29th, 2017)

  • Gibt falsch zurück, wenn es uns völlig misslingt, eine Sitzung zu generieren.

0.6.2 (June 6th, 2017)

  • Synchronisiert die Sitzungsbenutzerkennung, wenn sich ein Benutzer an- und abmeldet.

0.6.1 (May 25th, 2017)

  • Fehlerbehebung: Verhindert Warnung session_write_close() expects exactly 0 parameters, 1 given.

0.6.0 (November 23rd, 2016)

  • Fehlerbehebung: Verhindert einen fatalen PHP-Fehler in session_write_close() beim Ausführen der WordPress-shutdown-Aktion, bevor $wpdb sich selbst zerstört.
  • Fehlerbehebung: Speichert die tatsächliche Benutzer-ID in der Session-Tabelle anstelle von (bool) $user_id.

0.5

  • Kompatibilität mit PHP 7.
  • Fügt pantheon_session_expiration Filter hinzu, um den Ablaufwert der Sitzung zu ändern.

0.4

  • Anpassung am session_id()-Verhalten für größere Kompatibilität
  • Verwendung der superglobal für REQUEST_TIME im Gegensatz zu time()

0.3

  • Behebt ein Problem im Zusammenhang mit der Ladefolge des WordPress-Plugins

0.1

  • Erstveröffentlichung