Session Handling mit Drupal


Ich arbeite immer noch fleissig an meiner Masterarbeit. Dafür entsteht ein Co-Browsing System. Grundlage dafür ist, dass ein unangemeldeter Gast und ein registrierter Agent zusammen in einer Session arbeiten können.

1. Versuch

War mittels $_SESSION und dann das ganze in 2 Tabellen führen:

  • cobrowser_session
  • cobrowser_users

Dem Endbenutzer muss dann schlussendlich auf der Seite klar gemacht werden, dass er in einer Session ist. Denkste mit der $_SESSION! Absolut katastrophal. Ich weiss nicht, ob das am Drupal lag oder einfach so, aber das lief manchmal und manchmal auch nicht. Mein Fazit: $_SESSION nicht verwenden!

2. Versuch

Alles über die Datenbank steuern und jedes mal, wenn ein Request gemacht wird mit der browser_session (session_id()) vergleichen. Läuft viel stabilder, aber irgendwie ist das viel Overhead.

3. Versuch

Endlich die erläuchtung: Einen temporären Benutzer erstellen. Über hook_user einfach die zusätzlichen Informationen ans Userobjekt anhängen und schon kann man wie gewohtn auf $user zugreifen, auch wenn der Benutzer nicht angemeldet ist. Der Benutzer wird dann nach einer gewissen Zeit automatisch wieder gelöscht.

Es kann so einfach sein und ich kann auch mal getrost fast die Hälfte von meinem Code wieder löschen. Tja, manchmal muss man einfach durch diesen Prozess gehen, um etwas Gutes zu lernen.

Fazit

Drupal rocks!