"Cookies" sind Texte und Werte die Sie auf dem Rechner eines Besuchers Ihrer Seiten hinterlassen können und beim nächsten Aufruf wieder abrufen können. Da damit zumindest teilweise das Surfverhalten eines Nutzers zu verfolgen ist (und dies von Bannervermarkter-Firmen wie doubleclick auch fleissig gemacht wird), sind Cookies ein wenig in Verruf geraten. Eine Sicherheitslücke stellen Cookies aber nicht dar und so muss letztendlich jeder selbst entscheiden, ob er Cookies auf seinen Seiten einsetzt oder nicht...
Cookies abrufen
baseportal stellt Cookies ohne weiteres Zutun im Hash
%_cookies bereit:
gibt den Wert des Cookies
Name zurück.
Cookies setzen
Gesetzt werden Cookies durch den Befehl
set_cookies:
Definition:
set_cookies "[*]Cookie-Name=Wert[; expires=rfc-date]", ...;
|
Beispiele:
set_cookies "Name=Hans", "Alter=27";
|
setzt das Cookie "Name" auf "Hans" und "Alter" auf "27".
Lebensdauer festlegen
Die Cookies haben eine unendliche Lebensdauer (Um genau zu sein: Bis zum Jahr 2030; falls sie nicht vorher gelöscht werden). Um ein Cookie nur solange zu speichern, solange der Nutzer den Browser geöffnet hat (=eine "Sitzung", engl.
Session) muss man einen Stern vor den Cookie-Namen setzen:
set_cookies "*einkaufswagen=2472";
|
setzt das Cookie "einkaufswagen" auf "2472". Beim Schliessen des Browsers wird es automatisch gelöscht.
In ganz seltenen Fällen möchten Sie einem Cookie eine bestimmte Lebensdauer geben: Hierzu müssen Sie das Datum hintan stellen:
set_cookies "Sonderangebot_gekauft=0; expires=Mon, 24 Dec 2001 18:00:00 GMT";
|
setzt das Cookie "Sonderangebot_gekauft" auf "0". Ab dem 24.Dezember.2001 um 18:00 Uhr wird es automatisch vom Browser des Nutzers gelöscht. Das Datum muss in einem genau bestimmten Format vorliegen, sonst funktioniert es nicht. baseportal stellt dieses Format über die Datumsfunktion und den Formatnamen "rfc" bereit. Der obige Aufruf könnte also auch so aussehen:
set_cookies "Sonderangebot_gekauft=0; expires=".datum("24.12.2001,18:00","rfc");
|
baseportal wandelt das angegebene Datum automatisch in das richtige Format.
Weitere Parameter mitgeben
Neben der Lebensdauer können Cookies beliebige weitere Parameter mitgegeben werden. Wie beim obigen
expires müssen diese mit Strickpunkt
; an die Cookie-Zuweisung angehängt werden. Um z.B. ein Cookie nicht nur bei der aufrufenden Seite verfügbar zu machen, benötigt man den Parameter "path":
set_cookies "Nutzer=hans; path=/";
|
Die genaue Bedienung der Parameter erfahren Sie bei
Netscape.
Cookies löschen
Um ein Cookie zu löschen, muss einfach der Cookie-Name ohne Wert angegeben werden:
löscht das Cookie "Besucher".
Komplettes Beispiel
Das folgende Beispiel zeigt einen kleinen "Besucher-Zähler". Es erkennt, wenn ein Nutzer noch nie auf der Seite war und verlangt die Eingabe seines Namens. Dieser wird als Cookie auf seinem Rechner gespeichert, ebenso das Cookie "Besuche" das die Anzahl der Besuche mitzählt.
Um das Ganze zu testen kann man die Cookies auch wieder löschen lassen.
<perl>
if($cmd eq "clear") { out "Cookies sind jetzt gelöscht..."; set_cookies "Name=", "Besuche="; out '<p><a href="baseportal.pl?htx='.$htx.'">Seite erneut aufrufen</a>'; } else { if($Name) { out "Willkommen $Name!"; set_cookies "Name=$Name", "*Besuche=1";
out '<p><a href="baseportal.pl?htx='.$htx.'">Seite erneut aufrufen</a>'; } elsif($_cookies{Name}) { $Besuche=$_cookies{Besuche}+1; out "Hallo $_cookies{Name}, dies ist Dein $Besuche. Besuch!"; set_cookies "*Besuche=$Besuche";
out '<p><a href="baseportal.pl?htx='.$htx.'">Seite erneut aufrufen</a>'; out ' - <a href="baseportal.pl?htx='.$htx.'&cmd=clear">Cookies löschen</a>'; } else { out <<EOF; Herzlich Willkommen! Dies ist Dein erster Besuch. Wie heisst Du?<p> <form action="baseportal.pl?htx=/$htx" method="post" enctype="multipart/form-data"> <input type="hidden" name="htx=" value="$htx"> Name: <input type="text" name="Name="> <input type="submit" value="Abschicken"> </form> EOF } }
</perl>
|