Geschrieben von: Günter Hoffellner
Kategorie: ASP Tricks
This printed page brought to you by AlphaSierraPapa
Das Setzen oder Auslesen von Cookies in Flash kann nötig sein, um zum Beispiel die Personalisierung einer Website auch auf die Flash Datei ausdehnen zu können.
Flash unterstützt leider kein direktes Setzen oder Lesen von Cookies. Daher muß man entweder den vielfach beschriebenen Umweg über JavaScript gehen, oder man benutzt einfach ASP Skripts, um Cookies zu setzen und zu lesen. Dies hat unter anderem den Vorteil, daß Flash auf Cookies auch bei ausgeschaltetem JavaScript zugreifen kann.
Flash Anfänger, die mit ActionScript in Flash noch nicht vertraut sind, sollten zuerst den Artikel Datenaustausch zwischen Macromedia Flash und ASP lesen, um einen Einblick in die Grundlagen des Zusammenspieles von Flash und ASP zu bekommen.
Im folgenden wird die Flash Datei beschrieben, die beim Client Cookies lesen und setzen kann. Die Datei ruft dabei die ASP Skripts testCookies.asp, setCookies.asp und getCookies.asp auf, um mittels ASP Zugriff auf die Cookies des Browsers zu bekommen.
Die Flash Datei überprüft, ob Cookies beim Client zugelassen sind und erlaubt die Eingabe von Daten, die in einem Cookie gespeichert werden sollen. Ausserdem liest die Datei den Inhalt der Cookies aus und stellt ihn am Bildschirm dar.
Das Userinterface gliedert sich in drei Teile die im Folgenden näher beschrieben werden.
Bild 1: Userinterface in Flash
Der Benutzer klickt auf den "START TEST" Button um am Server die Überprüfung auszulösen, ob der Internetbrowser des Seitenbesuchers Cookies akzeptiert. In der Statusmeldung wird ausgegeben, ob der Browser Cookies annimmt oder nicht.
Im Falle daß Cookies akzeptiert werden läuft der Flash Film weiter zum zweiten Teil und erwartet die Eingabe von Daten, die in einem Cookie gespeichert werden sollen. Mit einem Click auf den "DATEN SENDEN" Button werden die Daten an den Server geschickt.
Im letzten Teil werden vom Server die Cookiedaten zurück in die Flash Datei geholt und in die Textausgabefelder geschrieben.
Der grafische Teil des Flashfiles ist standardmäßig aufgebaut und soll deshalb hier nicht weiter beschrieben werden.
Wichtig ist der Layer mit dem Namen "code", der den Sourcecode des Flashfiles enthält. Auf diesen soll jetzt näher eingegangen werden.
Bild 2: Userinterface in Flash
//Frame 1 Set Variable: "cookies" = "false" stop
Die Variable "cookies" wird mit dem String "false" initialisiert. "false" deshalb, weil vom Server nicht die boolschen Werte true und false zurückkommen sondern ein Strings mit den Wert "true" und "false". Flash wartet auf den Buttonklick um den Cookie-Test zu starten.
//Frame 2, Label Schritt1 Load Variables ("/testcookies.asp", 0)
Die Datei "testcookies.asp" wird aufgerufen und liefert "true" oder "false" (Cookies akzeptiert - Cookies nicht akzeptiert) zurück.
//Frame10 If (cookies eq "true") Set Variable: "cookietest" = "Cookies können gesetzt werden" Stop Else Set Variable: "cookietest" = "Cookies nicht erlaubt. Bitte einschalten" Go to and Stop ("keinecookies") End If
In Frame 10 wird je nach dem Ergebnis des Cookie-Tests eine andere Meldung in die Statuszeile ausgegeben.
Werden Cookies vom Browser nicht angenommen, so springt Flash auf den Label "keinecookies", bleibt dort stehen und läßt keine weiteren Eingaben außer einen weiteren Cookie-Test zu. In der if-Kondition ist cookies eq "true" in Anführungszeichen gesetzt, da der Server nicht wirklich den boolschen Wert true oder false zurückgibt, sondern einen String der dann auch gleich als solcher abgefragt wird. Man achte auch darauf, daß der Stringvergleich auch anstatt des "=" ein "eq" verlangt.
Durch den "Stop" Befehl wird Flash gezwungen auf einen Klickevent des "SENDE DATEN" Button zu warten. Das Senden der Cookiesdaten zum Server geschieht wie folgt:
//Frame11, Label Schritt2 Load Variables ("/setcookies.asp?cookiename="&name&"&"& "cookiemail="&email&"&"&"cookietelefon="&telefon, 0)
In diesem Skript wird ein Querystring, der die Usereingaben enthält, an das File " " geschickt. Für den Aufbau des Querystrings sei auf den Artikel "Datenaustausch zwischen Macromedia Flash und ASP" verwiesen.
//Frame19, Label Schritt3 Load Variables ("/getcookies.asp", 0) Die Daten eines via ASP ausgelesenen Cookies werden in das Flash File eingelesen. //Frame 28 Stop
Die eingelesenen Daten werden nach der kurzen Animation einer Linie in die danach erscheinenden Ausgabefelder ausgegeben.
//Frame 35, Label keinecookies stop
Wird durch den Test in Frame 10 festgestellt, daß keine Cookies zugelassen sind, wird innerhalb der Flash Timeline in diesen Frame verzweigt und die dem User die Gelegenheit gegeben, den Cookie-Test noch einmal durchzuführen.
Die 3 Dateien testcookies.asp, setcookies.asp und getcookies.asp werden vom Flash File für die folgenden Aktionen aufgerufen: Prüfen ob der Browser Cookies annimmt (testcookies.asp), Cookies setzen (setcookies.asp), Cookies auslesen (getcookies.asp).
Die Datei testcookies.asp prüft, ob der Browser Cookies annimmt. Die Technik ist dabei die selbe wie im Artikel Einfacher Test, ob der Browser Cookies annimmt. Die Variante des Scripts, die hier zur Anwendung kommt, sieht wie folgt aus:
<% strTest = Request.QueryString("CookieTest") If UCase(strTest) <> Ucase("true") Then ' Erster Aufruf ' Sessionvariable setzen Session("__FlashCookieTest") = True ' Redirect mit QueryString strURL = Request.ServerVariables("SCRIPT_NAME") strQueryString = "?CookieTest=true" Response.Redirect(strURL & strQueryString) Response.End Else ' Redirect ist bereits erfolgt ' Pruefen, ob Sessionvariable den Wert enthaelt If Session("__FlashCookieTest") = True Then ' Session Variable enthaelt Wert ' Daher akzeptiert Browser Cookies strOut = "Cookies=true" Else ' Session Variable enthaelt keinen Wert ' Daher akzeptiert Browser keine Cookies strOut = "Cookies=false" End If End If ' Output zu Flash: Response.Write(strOut) %>
Vereinfacht gesagt setzt das Skript eine Session Variable, macht einen Redirect auf sich selbst, und prüft anschließend, ob der Wert immer noch in der Session Variablen gespeichert ist. Damit der Wert gespeichert bleibt muß der Browser den Session Cookies des Internet Information Servers (IIS) angenommen haben, der von ASP automatisch zum Browser gesendet wird. Dies bedeutet, daß der Browser Cookies annimmt wenn der Wert in der Session Variable nach einem Redirect immer noch vorhanden ist.
Die Datei gibt den Text "Cookies=true" zurück, wenn der Browser Cookies annimmt, oder "Cookies=false" wenn der Browser keine Cookies akzeptiert.
Wenn das Flash nun die ASP Datei testcookies.asp mittels Flashkommando Load Variables aufruft, so gibt die ASP Datei entweder die Zeichenkette "Cookies=true" oder "Cookies=false" zum Flash File retour, wo dadurch automatisch die Variable Cookies auf "true" oder "false" in Flash gesetzt wird.
Mittels ASP kann man einfach Cookies setzen, indem man die Response.Cookies Collection benutzt. In unserem Beispiel ruft das Flash File die Datei setcookies.asp auf und übergibt die Variablen für die Cookies (Namen und Werte) im Querystring an das ASP Skript.
Das ASP Skript liest alle Wert aus der Querystring Collection aus und sendet, mittels Response.Cookies, die entsprechenden Cookies zum Browser. Das vollständige ASP Skript umfasst dabei nur 3 Zeilen:
<% For each item in Request.QueryString Response.Cookies(item) = Request.Querystring(item) Next %>
Das Auslesen der Cookies und das Schreiben zum Flash File gestaltet sich ähnlich einfach wie das Setzen der Cookies. Ruft das Flash File die Datei getcookies.asp auf, so liefert diese alle Namen und Werte der Cookies als URL-encoded Text zurück. Dadurch werden die Werte der Cookies einfach in Variablen mit den selben Namen in Flash gespeichert wenn Flash die Datei getcookies.asp aufruft. Die ASP Datei getcookies.asp lautet wie folgt:
<% For each cookie in Request.Cookies strOut = strOut & Server.URLEncode(cookie) & "=" strOut = strOut & Server.URLEncode(Request.Cookies(cookie)) strOut = strOut & "&" Next Response.Write strOut %>
Der Flashbasierende Teil dieses Artikels wurde in Flash 4 erzeugt. Die Systematik ist aber auch in der neu erschienenen Version 5 der Macromedia Software gleich.
Der ASP Teil läuft sowohl auf IIS 4.0 als auch auf IIS 5.0, und mit leichten Änderungen auch unter ASP+.
Nachdem in diesem Artikel das Setzen und Auslesen von Cookies mit Flash in Verbindung mit ASP beschrieben wurde soll dies in einem der nächsten Artikel vertieft werden indem auf der vorliegenden Basis eine einfache Personalisierung einer Flash Datei mittels Cookies beschrieben wird.
This printed page brought to you by AlphaSierraPapa
Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000908.zip
Datenaustausch zwischen Macromedia Flash und ASP
http:/www.aspheute.com/artikel/20000719.htm
Einfacher Test, ob der Browser Cookies annimmt
http:/www.aspheute.com/artikel/20000907.htm
Flash Detection ohne Komponente
http:/www.aspheute.com/artikel/20020320.htm
©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.