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.

 

 
   Anzeigen

Navigation:    Webdesign - Programmierung - Web Grafiken - Software Guides - Tools - Templates - Schriftarten - Seminare - IT News
Partner:   Template OK - PCopen - SITEopen - PCopen Schweiz - HTMLopen Schweiz - VirtualUniversity.ch - WEB-SET.com - YesMMS - Job und Karriere