Prinzip von Cookies/SID und Problemlösung beim automatischen Logout nach Login

In phpBB3 sind Cookies ein Hauptbestandteil, da sie wichtige Informationen und Daten enthalten, die der verbesserten Usability dienen. So wird beispielsweise ein Cookie auf dem Rechner gespeichert, der den Benutzer beim weiteren Surfen im Forum authentifiziert. Auch die Funktion Automatischer Login ist nur in Verbindung mit einem Cookie möglich.

Aus diesem Grund sind die Cookie-Einstellungen in phpBB3 ziemlich wichtig, da es mit einer fehlerhaften Konfiguration Probleme geben kann. Um die Cookie-Einstellungen vorzunehmen, loggt man sich in den Administrationsbereich (ACP) ein. Unter der Registerkarte Allgemein klickt man unter Server-Konfiguration auf Cookies:

phpBB3-Cookie Einstellungen

Wie man sieht, gibt es gerade einmal vier Einstellungsoptionen bezüglich der Cookies in phpBB3. Kurze Erläuterung zu den Cookie-Einstellungen:

Cookie-Domain: Damit ist die Domain gemeint, unter der das Forum erreichbar ist. Dabei ist es nicht wichtig, ob das Forum sich direkt im Root-Verzeichnis oder einem Unterordner befindet. Ist letzteres der Fall, so legt man dies unter Cookie-Pfad fest.

Cookie-Name: Legt fest, welchen Dateinamen das Cookie haben soll, wenn es auf dem Rechner gespeichert wird. Dieser Name muss für das Forum einzigartig sein und man muss diesen Namen so wählen, dass kein anderes Cookie denselben Namen hat.

Cookie-Pfad: Hiermit kann man bestimmen, ob sich das Forum direkt im Root-Verzeichnis oder einem Unterordner befindet. In oben gezeigten Beispiel ist das Forum unter www.pce-forum.de/phpBB3/ erreichbar.

Weitere Informationen zu den Einstellungen findet man auf der offiziellen phpBB3-Webseite: phpBB3 Documentation Cookies

Session-IDs (sid) aus Links entfernen

Wenn Cookies nicht korrekt gespeichert werden, weil der Leser beispielsweise Cookies im Browser deaktiviert hat, oder wenn die Cookie-Einstellungen fehlerhaft sind, kommen so genannte Session-IDs zum Einsatz. Somit kann phpBB3 auch die Leser authentifizieren, die keine Cookies unterstützen. Sollte in einem phpBB3-Forum etwas wie ?sid=93686109b869a667f8e0976390cm8965 an die Links angehangen werden, gibt es ein Problem bezüglich der Cookies, wenn die Cookies im Browser aktiviert sind. In diesem Fall müssen die Cookie-Einstellungen korrigiert werden.

Fehlerbehebung: Automatischer Logout nach erfolgreichem Login

Welche Probleme bezüglich Cookies auftreten können, zeigt folgendes Beispiel:

Um das PCE-Forum in aller Ruhe programmieren und testen zu können, wurde die phpBB3-Software auf einem lokalen Webserver installiert und entwickelt. Nachdem die neue phpBB3-Forensoftware den Status erste Beta-Version für den öffentlichen Zugang erreichte, wurde eine Kopie des Forum auf ein Testverzeichnis des Online-Webservers installiert. In der 1-zu-1-Kopie wurden schnell die Einstellungen Cookie-Domain und Server-Name angepasst, da das Forum nun nicht mehr unter http:// localhost erreichbar ist. Anschließend war das Forum auch unter einer öffentlichen URL erreichbar.

Doch es zeigte sich sehr schnell, dass das Einloggen nicht funktionierte. Nach jedem Login wurde der Benutzer automatisch ausgeloggt, obwohl das System eine erfolgreiche Anmeldung mit einer Info-Meldung bestätigte. An den Einstellungen Cookie-Domain und Cookie-Pfad konnte es nicht liegen, da hier mehrere Varianten durchgespielt und Caching-Probleme nach jeder Änderung durch Leeren des Caches vermieden wurden. Auch ein falscher Benutzername/Passwort konnte ausgeschlossen werden, da der Login auf der lokalen Installation reibungslos klappte. Da die MySQL-Version auf beiden Systemen nahezu identisch war, lag der Fehler auch nicht bei dem Datenbank-Import.

Somit verging die Zeit mit der Fehlersuche, bis sich letztendlich herausstellte, dass es an dem Cookie-Namen lag, der auf beiden Systemen identisch war. Da derselbe Browser bereits auf der lokalen phpBB3-Installation angemeldet war und ein Cookie abgelegt wurde, konnte bei der Online-Aneldung kein weiteres Cookie mit demselben gespeichert werden. Aus diesem Grund wurde der Benutzer nach erfolgreichem Login automatisch ausgeloggt.