Artikel - Detailansicht

Icon Aktuelles Backrezepte für Cookies

Es müssen nicht immer Clientvariablen bei der CF-Programmierung sein, Cookies können manchmal eine gute Alternative sein. Zwar benutzen Clientvariablen (wenn mit Cookies eingestellt) auch Cookies, was aber für den Programmierer weitgehend transparent bleibt.
Hat aber der User die Cookie-Warnung in seinem Browser eingestellt, öffnen sich gleich zu Beginn des Site-Besuches bei der Benutzung von Clientvariablen nacheinander 2 Popupfenster (für CFID und CFTOKEN) , was den User sicher nicht erfreut und keinen guten Eindruck hinterlässt. Cookies arbeiten hier etwas userfreundlicher, denn man kann selbst festlegen, wann der Cookie gesetzt werden soll. Hat man z. B. ein Warenkorbsystem muss man ja nicht gleich den User verschrecken und schon auf der Startseite den Cookie setzen. Wenn er etwas in den Warenkorb legen will und dann erst kommt das Popup-Fenster weis der User wenigstens, warum das Cookie kommt.

Ein weiterer Vorteil von Wertespeicherung in Cookies anstatt in Clientvariablen besteht darin, dass die Informationen komplett auf dem Userrechner liegen. Bei der Benutzung von Clientvariablen werden nur CFTOKEN und CFID auf dem Client gespeichert, die zugehörigen Variablenwerte auf dem Server z. B. in der Registry oder einer Datenbank. Bei Websites mit starkem Zugriff hat man schnell eine riesige Menge von Clientvariablen und der Systemadministrator wird sich bedanken, wenn man ihn seine Registry mit Clientvariablen vollpumpt.
Die Werte des Cookies sollten ausserdem mit der Encrypt()-Funktion verschlüsselt werden. Kein User freut sich, wenn er auf der Festplatte Dinge wie passwort="blaa" oder KundenNr="233" findet :-) (Cookies liegen als unverschlüsselte Dateien auf der Festplatte!).

Bei Abfrage eines Cookies sollte man nie vergessen, die Existenz mit den CF-Methoden (z. B. isDefined() oder CFPARAM) vor Abfrage zu testen. Sollte der User Cookies in seinem Browser deaktiviert haben, wird der gesetzte Cookie nicht da sein.
Der User kann eine Seite, die nur mit Cookies zugänglich ist, in seinem Browser als Bookmark gespeichert haben und der gesetzte Cookie ist ausgelaufen. Auch dann wäre der Cookie nicht vorhanden.

Cookies werden im HTTP-Header mit dem Browser ausgetauscht. Man sollte deshalb beachten, dass ein Cookie nicht auf der selben Seite abgefragt werden kann, auf der er erst gesetzt wurde. Ein Cookie muss erst zum Browser gesendet werden und der Browser kann ihn dann erst im nächsten Request mitsenden. Deshalb ist der Cookie auch erst auf der nächsten Seite vorhanden.

Weitere Dinge gibt es bei der Benutzung von CFLOCATION und Cookies zu beachten. Bei einem CFLOCATION-Tag wird der Browser angewiesen, eine neue Seite zu laden. Dabei wird der eben mitgesandte HTTP-Header verworfen. Ein mitgesandter Cookie wird also nicht vom Browser gespeichert und ist deshalb auf der nächsten Seite nicht vorhanden. Das ist kein Bug in ColdFusion sondern ein Bug im Webprotokoll (oder Feature, wie man es sehen will). Sollte man das Setzen eines Cookies vor dem CFLOCATION benötigen muss man einen Reload im Browser mit Javascript oder META-Tags erzeugen, etwas so:

<CFHTMLHEAD
  TEXT=
"<script language='JavaScript'>
  self.location.replace('seite.cfm');
  </script>"

>

Der komplette Code sieht folgendermassen aus:

seite1.cfm soll einen Cookie setzen und auf seite2.cfm umleiten. In seite2.cfm soll der Cookie abgefragt werden. Zuerst der Code mit dem CFLOCATION-Tag, der NICHT funktioniert!

seite1.cfm

<body>
<CFIF umleitung is "ja">
  <CFCOOKIE name=
"login" value="ok">
  <CFSET newURL=
"seite2.cfm">
  <CFLOCATION url=
"#newURL#">
</CFIF>
  
</body>

Auf seite2.cfm führt die Cookieabfrage ( cookie.login ) nun zu einer Fehlermeldung.
Dieser Code funktioniert:

<body>
<CFIF umleitung is "ja">
  <CFCOOKIE name=
"login" value="ok">
  <CFSET newURL=
"seite2.cfm">
  <CFHTMLHEAD TEXT=
"
    <script language='JavaScript'>
      self.location.replace('#url#');  
    </script>
  "
>
</CFIF>

</body>



Stefan Landfried stefan@cfml.de - 20.10.1999

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen