Tel. 06151 / 39 10 793

Drupal Anonyme Session und Users-Tabelle

User 0 in der users-Tabelle

Die Benutzung von Session Variablen ist gang und gäbe. Man benutzt sie zum Beispiel, um Einkaufswagen in Shopsystemen zu erschaffen, da PHP und HTML zustandslos und somit "vergesslich" zwischen zwei Seitenaufrufen sind.
In Drupal gibt es ein sehr komfortables Session-Handling, um das sich der Programmierer in der Regel keine Gedanken machen muss, da alles von Drupal gemacht wird.
In diversen Projekten ist es gelegentlich schon passiert, das nach einem Überspielen der Datenbank die anonymen Benutzer plötzlich keine Session Variable mehr hatten.
Zuerst ist in einer solchen Situation die Verwirrung zunächst groß. Was ist nun passiert?
Durch etwas google-Suche stösst man früher oder später auf http://drupal.org/node/353428 oder ähnliche Beiträge, wo andere schon das gleiche Problem hatten.
Beim genauerem hinsehen in den Drupal-Code lüftet sich das Geheimnis. Beim Laden der Session wird eine Datenbankabfrage ausgeführt, die für Anonyme User einen JOIN gegen die Users-Tabelle mit der uid 0 enthält. Ist dieser User dort nicht enthalten, versagt der Datenbank-Aufruf und die Session für diesen User kann nicht geladen werden.
Eine anschliessende Inspektion der Users-Tabelle ergab genau dieses Resultat: Der User 0 war durch einen unglücklichen Ex/Import aus der Tabelle verschwunden. Das war also die ganze Ursache des Übels.
Nur gut, das wir das aufgeklärt haben...

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
CAPTCHA
Diese Frage hat den Zweck zu testen, ob Sie ein menschlicher Benutzer sind und um automatisierten Spam vorzubeugen.
So finden Sie uns