|
Wie Cookies erzeugt werden, wurde bereits beschrieben. Wichtig ist, dass es genau ein Cookie gleichen Namens bezogen auf einen Pfad gibt. Wird eine Datei aus diesem Server-Pfad aufgerufen, die auf Cookie-Informationen zugreifen will, so wird das für diesen Pfad zugelassene Cookie genommen.
| Python - CGI Erzeugen zweier Cookies |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#!E:\xampp\Python27\python.exe #-*- coding: utf-8 -*-python import time # Modul time gibt die Möglichkeit auf die Systemzeit des Rechners zuzugreifen. Dabei # gibt es unterschiedliche Formate. Die Methode time.time() ist eine Fließkommazahl (UNIX-Zeit). # Hier wird die UTC-Zeit ab dem 1. Januar 1970 in Sekunden dargestellt, Schaltsekunden werden # nicht mitgezählt. (s.a. http://de.wikipedia.org/wiki/Unixzeit#Umrechnung) # In Cookies werden Strings verarbeitet, so dass wir die Fließkommazahl # in einen String (Zeichenkette) umwandeln müssen. # Das Format der Zeitangabe für das Verfallsdatum: Wochentag, Tag-Monat-JJJJ HH:MM:SS GMT s0= str(time.time()) #Die Unixzeit als String # Wollen wir die verschiedenen Felder eines Cookies, Pfad (Path), Gültigkeitsdatum (Expires) usw. # durch einen String übertragen, so müssen wir die Feldinformationen durch Semikola abgrenzen. s1="Set-Cookie: Zeit= "+ s0 +';' s2= "Expires= Sunday, 01-May-2011 02:00:01 GMT " #Gültigkeitsdatum des Cookies s3="Set-Cookie: letzter Besuch=habe keine Ahnung " print s1+s2 print s3 print 'Content-Type: text/html' print # End of HTTP header print '<html><body>' print 'Zeit auf dem Server: ', s0+ " in Sekunden <br/>" print print '</body></html>'
|
Auslesen von Cookies:
Es wurden hier, falls keine entgegengesetzten Einschränkungen durch den Nutzer vorgenommen wurden, zwei Cookies angelegt. Mit dem Verfahren, welches in dem Kapitel "Cookies erzeugen" beschrieben wurde, können wir dies schnell überprüfen. Das folgende Skript zeigt, wie wir auf diese Informationen zugreifen können, ohne das Python Modul Cookie.
Genutzt wird hier das Modul os, mit dem auf Umgebungsvariablen zurückgegriffen werden kann.
| Python - CGI Ausgabe des Inhaltes von Cookies |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#!E:\xampp\Python27\python.exe #-*- coding: utf-8 -*-python import os #Hiermit können wir auf wichtige Umgebungsvariablen zugreifen. # Hier wird der Name des Cookies und Inhalt wiedergegeben, falls denn # für Skripte diese Verzeichnissen ein Cookie gesetzt wurde. if "HTTP_COOKIE" in os.environ: s=os.environ["HTTP_COOKIE"] # Ausgabe: Cookie-Name=Inhalt else: s="kein Cookie vorhanden" print 'Content-Type: text/html' print # Hier ist der Header beendet. print '<html><body>' print s print '</body></html>'
|
Das Ergebnis:
Da vorher zwei Cookies bezogen auf Dateien des /cgi-bin -Verzeichnisses erzeugt wurden, werden auch beide Inhalt der Cookies wiedergegeben.

Auswertung der Unix-Zeit:
Eine Auswertung ist mit Hilfe der Stringverarbeitung möglich oder auch mit Hilfe des Cookie-Moduls.
| Python - Auswertung eines Zeit-Cookies |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
#!E:\xampp\Python27\python.exe #-*- coding: utf-8 -*-python import os import time # Hiermit können wir auf wichtige Umgebungsvariablen zugreifen. # Hier wird der Name des Cookies und Inhalt wiedergegeben, falls denn # für Skripte diese Verzeichnissen ein Cookie gesetzt wurde. # Sinnvollerweise wurde vorher das 1. Skript : Erzeugung zweier # Cookies geladen. Da eine Zeitinformation erwartet wird. if "HTTP_COOKIE" in os.environ: s=os.environ["HTTP_COOKIE"] # Ausgabe: Cookie-Namen=Inhalt Wortliste=s.split(';') # Der String s wird aufgesplittet # in Einzelstrings, die durch ein # ein Semikolon abgetrennt sind. # s.a. im Python-Handbuch s=Wortliste[0] # Zurück bleibt die Information # über das 1. Cookie. Siehe Ausgabe. Wortliste=s.split('=') unix_Zeit=Wortliste[1] # unix_zeit wird separiert u=float(unix_Zeit) lokale_Zeit=time.localtime(u) #localtime erwartet als Parameter die unix_Zeit #im Fließkommaformat. Es wird eine Liste mit #Zeitinformationen erzeugt, die geordnet durch #die Methode asctime ausgegeben wird s.u.. else: s="kein Cookie vorhanden" unix_Zeit="" lokale_Zeit="" print 'Content-Type: text/html' print # Hier ist der Header beendet. print '<html><body>' print "Name und Inhalt des 1. Cookies:"+s+"<br/>" print "unix-Zeit="+unix_Zeit+"<br/>" print "Lokale Zeitinformation="+time.asctime(lokale_Zeit) print '</body></html>'
|
Das Ergebnis:

Einlesen eines Cookies mit Hilfe des Python-Moduls Cookie:
| Python - CGI - Modul Cookie |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#!E:\xampp\Python27\python.exe #-*- coding: utf-8 -*-python import Cookie import os import time #Es wird Instanz info der Klasse SimpleCookie erzeugt #Es wird der Wert des Cookies Zeit ausgegeben. #Es handelt sich hier um eine Unix-Zeit #Vorraussetzung: Es wurde ein entsprechendes Cookie #erzeugt. s. 1 Skript auf dieser Seite. if "HTTP_COOKIE" in os.environ: info=Cookie.SimpleCookie(os.environ["HTTP_COOKIE"]) s=info["Zeit"].value else: s="Du bist zum ersten mal auf unserer Seite!" print 'Content-Type: text/html' print # Hier ist der Header beendet. print '<html><body>' print "Die Unixzeit beim letzten Besuch: " +s +"<br/>" print "Die gegenwärtige Unixzeit:" + str(time.time()) +"<br/>" print '</body></html>'
|
Das Ergebnis:

|