Python: Welcome back!
von Kai Surendorf
Aus Kneipen wissen wir: Stammkunden erhalten eine persönlichere
Begrüßung als Laufkundschaft. Das geht auch mit wiederkehrenden
Besuchern Ihrer Website. Mit einem kleinen Script in Python ist dies
einfach zu realisieren.
Python bringt von Haus aus ab Version 2.1 ein Modul für die Nutzung
von Cookies in CGI-Skripten mit. Mit dem Modul lassen sich Cookies setzen
und auslesen und damit dauerhaft Daten im Browser des Besuchers speichern.
Im Folgenden ein kleines Skript, das anhand eines Cookies überprüft, ob
der Besucher schon einmal auf der entsprechenden Website gewesen ist.
#!/usr/bin/python
import cgi
import Cookie
import os
Keks = Cookie.SmartCookie()
try:
Keks.load (os.environ["HTTP_COOKIE"])
Wert = Keks["besuch"].value
except:
Wert = "Erstbesucher"
If Wert == "Erstbesucher":
Keks["besuch"] = "Zweitbesucher"
Keks["besuch"]["expires"] =
123499990
Keks["besuch"]["path"] =
"/"
print Keks
print "Content-Type: text/plain \n\n"
print "Hallo erstmal..."
If Wert == "Zweitbesucher":
Print "Content-Type: text/plain \n\n"
Print "Welcome back!"
Zuerst gilt es wie üblich die benötigten Module zu importieren. Dies
sind das cgi-Modul, das Cookie-Modul und das Modul für die Zusammenarbeit
mit dem Betriebssystem, os. Anschließend erzeugt das Script ein Objekt
(Keks) für den Cookie. Nun wird in Erfahrung gebracht, ob es bereits
einen Cookie gibt. Cookies werden vom Browser bei einer Anfrage an den
Webserver automatisch mitgeliefert und über eine Umgebungs-Variable des
Betriebssystems können Sie deren Wert auslesen. (Daher muss für dieses
Script auch das Modul os importiert werden.) Mit Keks.load wird der Wert
der Umgebungsvariable HTTP_COOKIE eingelesen. Nur am Rande: Mit der
Funktion os.environ können Sie auch auf alle anderen Umgebungsvarianten,
die Ihnen vielleicht von Perl oder SSI bekannt sein sollten, zugreifen,
wie z.B. HTTP_REFERRER um zu erfahren, von welcher Seite der Besucher
gekommen ist.
Cookies werden in Python wie Dictionaries behandelt. Dies bedeutet, dass
ein Wert mit Hilfe eines Strings identifiziert wird. Dies hat den Vorteil,
dass Sie mehrere Werte in Cookies speichern können. Im Beispiel soll
ermittelt werden, ob der eventuell vorhandene Cookie einen Wert zum
Eintrag "besuch" aufzuweisen hat. Wenn dies der Fall ist, soll
der Inhalt dieses Eintrages in der Variable Wert gespeichert werden (Wert
= Keks["besuch"].value). Sollte dies nicht der Fall sein, wird
der Besucher als "Erstbesucher" eingestuft. try und except
bedeuten in dem Bespiel, dass zuerst versucht wird, die Daten des Cookies
einzulesen und, falls dies nicht möglich sein sollte, der Variable
stattdessen quasi eigenhändig einen Inhalt zuzuweisen. Mit try und
except, die Befehle dienen dem Abfangen von Fehlern, wurde hier bewusst
gearbeitet. Wenn Sie nämlich versuchen sollten, den Wert des Cookies
auszulesen, ohne das ein solcher existiert, führt dies zu einer
Fehlermeldung und das Script bricht ab.
Nun ist klar, ob es sich um einen Erst- oder einen Zweitbesucher handelt.
Falls es sich um einen Zweitbesucher handelt, wird einfach nur ein
"Welcome back!" ausgegeben. Sollte es sich hingegen um einen
Erstbesucher handeln, so muss nun ein Cookie gesetzt werden, um ihn zukünftig
identifizieren zu können. Im ersten Schritt wird ein Eintrag mit dem
Namen "besuch" erzeugt, der den Wert "Zweitbesucher"
haben soll. Diesem Eintrag sollen im zweiten und dritten Schritt noch zwei
Attribute hinzugefügt werden. Mit
Keks["besuch"]["expires"] = 123499990 wird die
Haltbarkeit des Cookies deklariert. Die Zahl gibt die Existenzdauer in
Sekunden an. (Hier sind es also knapp vier Jahre.) Mit
Keks["besuch"]["path"] = "/" wird der
Geltungsbereich des Cookies geregelt. In diesem Fall soll er für die
gesamte Website gelten. Möchten Sie, dass der Cookie nur in einem
bestimmten Verzeichnis Anwendung findet, so ändern Sie die Pfad-Angabe
entsprechend ab. Mit Keks["besuch"]["path"] =
"/cgi-bin/" würde der Cookie nur für das CGI-Verzeichnis
gelten. Abschließend wird der Cookie zum Browser übertragen. Dies
geschieht ganz simpel durch print Keks. Das Cookie-Modul kümmert sich
hierbei um die Kommunikation mit dem Browser des Besuchers.
Um das Script in Ihre Website zu integrieren, rufen Sie es einfach als SSI
auf.
Mit der abgewandelten Begrüßungsformel wurde nur ein eher unscheinbares
Anwendungsfeld angesprochen. Sie können aber das obige Beispiel auch
beispielsweise dahingehend modifizieren, dass Sie es im Head-Bereich des
HTML-Codes anwenden und statt einer Begrüßungsformel ein Javascript nur
für Erstbesucher ausgeben, das ein Werbe-Fenster öffnen soll.
|