在 Flash 中設定以及讀取 cookies 是有必要的,例如可以在 Flash 檔案中提供網站個人化。 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 檔的 ScriptsFlash 檔的圖案是根據標準的程序建立的,因而無法詳細來描述。 名稱 '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") = True Then ' Session variable contains value ' Thus browser accepts cookies strOut = "Cookies=true"Else ' Session variable is empty ' Thus browser does not accept cookies strOut = "Cookies=false"End IfEnd If' Output to Flash:Response.Write(strOut)%> 簡單的說,這個 script 設定一個 session 變數,執行轉跳 (redirect) 到它自己本身,然後檢查該值是否還設定在 session 變數中。為了讓值仍然保存,瀏覽器必須已經接受 Internet Information Server (IIS) 的 session cookie,然後再由 ASP 送到瀏覽器。這意味著,瀏覽器接受 cookies ,當這個 session 變數的值在轉跳 (redirect) 之後仍然還存在著。 如果瀏覽器接受 cookies,該檔案會傳回文字 'Cookies=true' 或是不接受的話,則傳回 'Cookies=false'。 當 Flash 藉由命令 Load Variables 來呼叫檔案 testcookies.asp,ASP 檔案會傳回字串 "Cookies=true" 或 "Cookies=false" 到 Flash 檔案,然後在 Flash 中設定該變數 Cookies 為 "true" 或 "false" 。 設定 Cookies在 ASP 中 cookies 可以很容易使用 Response.Cookies 集合設定。在我們的例子中,這個 Flash 檔案呼叫檔案 setcookies.asp ,然後傳送在 Querystring 中 cookies (names and values) 變數到 ASP Script。 ASP Script 會從 Querystring 集合讀取所有的值,藉由 Response.Cookies 送出對應的 cookies 到瀏覽器。整個 ASP script 只有三行: <%For each item in Request.QueryStringResponse.Cookies(item) = Request.Querystring(item) Next%> 讀取 Cookies讀取 Cookies 以及將它們寫入 Flash 檔案中就像設定 cookies 一樣簡單,當 Flash 檔案呼叫檔案getcookies.asp,會以 URL 編碼文字傳回所有的 cookies 的名稱和值。這樣一來, 當 Flash 呼叫檔案 getcookies.asp,cookies 的值會寫入 Flash 檔案同樣名稱的變數中 ASP 檔案 getcookies.asp 如下: <%For each cookie in Request.Cookies strOut = strOut & Server.URLEncode(cookie) & "=" strOut = strOut & Server.URLEncode(Request.Cookies(cookie)) strOut = strOut & "&"NextResponse.Write strOut%> 結論這篇文章的 Flash 部分是使用 Flash 4,對於 Macromedia 軟體新的版本 Version 5 的整個系統架構是同樣的。 ASP 部分可以在 IIS 4.0 以及 IIS 5.0 上來執行,且只要稍作修改也能在 ASP.NET 上執行。 在這篇文章描述了與 ASP 有關的 cookies 設定以及讀取,在之後會有一篇文章,將藉由目前這個 Flash 中使用 cookies 的簡單個人化設定基本架構,做更進一步來發展。 |
温馨提示:喜欢本站的话,请收藏一下本站!