在 Flash 中設定以及讀取 cookies 是有必要的,例如可以在 Flash 檔案中提供網站個人化。
Flash 不支援直接的設定以及讀取 cookies。因此,一般就是使用 JavaScript 或是 ASP scripts 設定以及讀取 Cookies。除了別的以外,另一好處是 Flash 即時是沒有 JavaScript 功能下仍能存取 cookies。
Flash 檔案
在下面描述了 Flash 檔案可以設定以及讀取 cookies,該檔案呼叫 ASP Scripts
testCookies.asp,
setCookies.asp 以及
getCookies.asp 經由 ASP 來存取在瀏覽器中的 cookies。
Flash 檔案會測試獲得許可來設定客戶端的 cookies 以及允許使用儲存於 cookies 中的資料,檔案也可以讀取 cookies 內容且呈現在螢幕上。
下載中有二個檔案:一個是英文的 .fla ,另一檔案是用德文。編譯檔 .swf 僅是德文。
使用者介面
使用者介面分為以下三個部分來作說明:
圖一:Flash 中的使用者介面 Step 1:
使用者按下 'START TEST' 按鈕會在 server 引發測試是否網頁的來訪者的瀏覽器接受 cookies。Status message 會現顯是否接受 cookies。
Step 2:
在這例子 cookies 會被接受,Flash movie 執行到第二的部分,並等待資料被儲存在 cookie。按一下 'SEND DATA' 按鈕,資料會傳送到 server。
Step 3:
最後部分,server 將 cookie 資料送回 Flash 檔案,會將它們寫入文字欄位 (text fields)。
Flash 檔的 Scripts
Flash 檔的圖案是根據標準的程序建立的,因而無法詳細來描述。
名稱 '
Sourcecode' 的圖層 (layer) 是重要的,包含Flash 檔案的程式碼,我們現在就來詳細說明。
圖二: Flash 中的時間軸 //Frame 1Set Variable: "cookies" = "false"stop
變數 '
cookies' 被初始化為字串 '
false',當 server 不回傳布林值
true 和
false 時,會使用 '
false'。但字串含有值 "
true" 或 "
false" 時,Flash 就等待按鈕來啟動 cookie 測試。
//Frame 2, Label step1Load Variables ("/testcookies.asp", 0)
檔案 '
testcookies.asp' 被呼叫以及回傳 '
true' 或 '
false' (接受 Cookies 或不接受 Cookies).
//Frame10 If (cookies eq "true") Set Variable: "cookietest" = "Cookies can be set"Stop Else Set Variable: "cookietest" = "Cookies not allowed. Please enable." Go to and Stop ("nocookies")End If
在 Frame 10 狀態欄會依測試結果展現出不同訊息。
如果不接受 cookies,Flash 就會跳到標籤 '
nocookies',停在那裡,而且除了另外的 cookies 測試外不接受任何的輸入。在
if 條件據
cookies eq "true" 用引號設定,因為 server並部會真正的傳回布林值
true 或
false,但是字串就其本身卻能馬上測試。同時注意字串的比較必須是使用 '
eq' 而不是 '
='。
'stop' 命令使得 Flash 必須等待 'SEND DATA' 按鈕 click 事件。將 cookie 資料送到 server 端會像這樣 :
//Frame11, Label step2Load Variables ("/setcookies.asp?cookiename="&name&"&"&"cookiemail="&email&"&"&"cookietelephone="&telephone, 0)
這個 script 中,請求字串 (query string) 包含使用者輸入的資料會送到檔案 '
setcookies.asp'。關於字串的組成,請參考文章 'Data Exchange between ASP and Flash' (僅德文)。
//Frame19, Label step3Load Variables ("/getcookies.asp", 0)
ASP 從 cookie 中讀取資料會被載入 Flash 檔案中。
//Frame 28Stop
在短暫的線段動畫後,載入的資料會呈現在文字欄位 (text fields)。
//Frame 35, Label nocookiesstop
如果在 frame 10 不允許任何的 cookies,Flash 時間軸會分入到這個 frame,而使用者就有機會執行另外的測試。
ASP 檔案的 Scripts
這三個檔案
testcookies.asp,
setcookies.asp 以及
getcookies.asp 會被 Flash 呼叫執行以下動作: 檢查瀏覽器是否接受 cookies (
testcookies.asp),設定 cookies (
setcookies.asp),讀取 cookies(
getcookies.asp)。
檢查瀏覽器是否接受 cookies
檔案 testcookies.asp 檢查瀏覽器是否允許 cookies。 這個技巧與這篇文章 "Simple Browser Cookie Test" (僅德文) 是一樣的技巧。在這裡所使用的 script 如下:
<%strTest = Request.QueryString("CookieTest")If UCase(strTest) <> Ucase("true") Then ' First call ' Set session variable Session("__FlashCookieTest") = True ' Redirect with QueryString strURL = Request.ServerVariables("SCRIPT_NAME") strQueryString = "?CookieTest=true" Response.Redirect(strURL & strQueryString) Response.EndElse ' Redirect already happened ' Check whether the session variable contains the value If Session("__FlashCookieTest") = Tru