Cookies in Flash mittels ASP manipulieren
Geschrieben von: Günter Hoffellner 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. Das FlashfileIm 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 UserinterfaceDas Userinterface gliedert sich in drei Teile die im Folgenden näher beschrieben werden.
Schritt 1: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. Schritt2: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. Schritt3:Im letzten Teil werden vom Server die Cookiedaten zurück in die Flash Datei geholt und in die Textausgabefelder geschrieben. Die Scripts des Flash FilesDer 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.
//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 Scripts der ASP DateienDie 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). Prüfen ob der Browser Cookies annimmtDie 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. Cookies setzenMittels 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 %> Cookies auslesenDas 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 %> SchlußbemerkungDer 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. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Datenaustausch zwischen Macromedia Flash und ASP Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |