Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Cookies in Flash mittels ASP manipulieren

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.

Das Flashfile

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

Das Userinterface gliedert sich in drei Teile die im Folgenden näher beschrieben werden.


Bild 1: Userinterface in Flash

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 Files

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 Scripts der ASP Dateien

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).

Prüfen ob der Browser Cookies annimmt

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.

Cookies setzen

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
%>

Cookies auslesen

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
%>

Schlußbemerkung

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

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000908.zip

Verwandte Artikel

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.