Deutsch English
Blog
Home
Über tdbengine
Newsletter
Download
Helpware
Chat
Dokumentation
Einführungskurs
Befehlsreferenz
HOWTO - Wie kann ich...?
Schnipsel
Projekte
Links
Benchmarks
Bug Reporting
Supportanfrage
 
Home    Überblick    Suche    Impressum    Kontakt    Mitglieder
Wie kann ich mit Cookies arbeiten?
Um ein bisschen mehr Licht ins Keks-Dunkel zu bringen empfehlen wir die Lektüre dieses Mini-HOWTOs.


Der Keks, ein unbekanntes Wesen.
Kekse (Neudeutsch: "Cookies") sind leider keine Erzeugnisse des Bäckerhandwerks, sondern kleine Textketten, die auf der Festplatte Ihres Rechners gespeichert sind, sofern Sie sie nicht löschen (oder ihre Gültigkeitsdauer abläuft).
Die auf Ihrem Rechner gespeicherten Informationen werden nur an den Server übertragen, von dem sie ursprünglich gekommen sind.

Cookies sind keine Computerprogramme und dürften die Daten auf Ihrem Rechner nicht beschädigen .


Hier! Nimm doch einen Keks.
Um ein Cookie beim Anwender zu setzen müssen Sie dieses noch vor allen anderen Ausgaben im HTTP-Header übergeben.
Dazu schreiben Sie einfach eine Zeile mit folgendem Aufbau noch vor der Ausgabe der "content-type"-Zeile:

set-cookie: <NAME>=<WERT>;

oder

set-cookie: <NAME>=<WERT>; expires=<RFC-DATUM>; path=<PFADANGABE>;


Beispiel:

...
CGIWriteLn('Set-Cookie: User=Mustermann; expires=Sunday, 01-Dec-2099 12:00:00 GMT; path=/;')
CGIWriteLn('Set-Cookie: Birthday=01.02.1960; expires=Sunday, 01-Dec-2099 12:00:00 GMT; path=/;')
CGIWriteLn('content-type: text/html')
CGIWriteLn('')
// BIS hier ist alles HTTP-Header, jetzt erst kommt die HTML-Seite

CGIWriteLn('<html>')
CGIWriteLn('<head><title>cookie-test</title></head>')
CGIWriteLn('<body>Cookie gesetzt</body>')
CGIWriteLn('</html>')
...

Dieses Beispiel setzt zwei Cookies "User" und "Birthday" und versieht diese mit den Inhalten "Mustermann" und "01.02.1960". Die Lebensdauer dieser beiden Kekse ist beachtlich, verenden sie doch erst zum Wechsel ins nächste Jahrhundert (siehe "expires").


Ich habe einen Keks von dir bekommen.
Das Auslesen von Cookies ist mit der tdbengine geradezu ein Klacks. Ein Aufruf der Funktion CGIGetParam() reicht bereits aus, um auf alle (erreichbaren) Cookies zuzugreifen.
Übergeben Sie dazu CGIGetParam() lediglich den Text "cookie." gefolgt vom Namen des gewünschten Plätzchens, also z.B. cookie.Birthday.


...
VAR cUser : STRING = CGIGetParam("cookie.User")

CGIWriteLn('content-type: text/html')
CGIWriteLn('')
// BIS hier ist alles HTTP-Header, jetzt erst kommt die HTML-Seite

CGIWriteLn('<html>')
CGIWriteLn('<head><title>cookie-test 2</title></head>')
CGIWriteLn('<body>Hallo '+cUser+'!<br> Ich weiss, was sie letzten Sommer getan haben!</body>')
CGIWriteLn('</html>')
...


Iss den Keks auf!

Manchmal kann es durchaus sein, dass ein Cookie, welches zuvor gesetzt wurde, plötzlich nicht mehr von Nutzen ist. Beispiel: Der Anwender meldet sich neu an und es wird ihm eine neue Session-Nummer zugewiesen. Es spricht aus Anwendersicht sicherlich nichts dagegen, wenn man so ein altes, verdörrtes Plätzchen sachgemäss entsorgt.
Dazu setzt man am besten das Verfallsdatum auf einen Tag in der Vergangenheit.
Dies geschieht wie bereits oben beschrieben mit der ersten Zeile einer HTTP-Ausgabe.


...
CGIWriteLn('Set-Cookie: User=Mustermann; expires=Monday, 01-Jan-2000 12:00:00 GMT;')
CGIWriteLn('content-type: text/html')
CGIWriteLn('')
// BIS hier ist alles HTTP-Header, jetzt erst kommt die HTML-Seite

CGIWriteLn('<html>')
CGIWriteLn('<head><title>cookie-test</title></head>')
CGIWriteLn('<body>Cookie User gelöscht</body>')
CGIWriteLn('</html>')
...

Die Variable "User" in diesem Cookie hat nun keine Gültigkeit mehr - sie wird daher vom Browser auch nicht mehr an den Server übermittelt.

Weiterführende Links:

http://wp.netscape.com/newsref/std/cookie_spec.html


Autor: Thomas Friebel <tf@tdb.de>


tdbengine Anwendungen im Web:

Open-Source Web CMS


Open-Source Bug-Tracking


Free wiki hosting

Open-Source Wiki-System

Kostenloses Foren-Hosting

Diät mit tdbengine 8-)

tdbengine chat
irc.tdbengine.org
#tdbengine

   Copyright © 2003-2004 tdb Software Service GmbH
   Alle rechte vorbehalten. / All rights reserved
   Letzte Änderung: 20.12.2004


ranking-charts.de

Programmers Heaven - Where programmers go!