|
在 Flash 中設(shè)定以及讀取 cookies 是有必要的,例如可以在 Flash 檔案中提供網(wǎng)站個(gè)人化。 Flash 檔案在下面描述了 Flash 檔案可以設(shè)定以及讀取 cookies,該檔案呼叫 ASP Scripts testCookies.asp,setCookies.asp 以及 getCookies.asp 經(jīng)由 ASP 來存取在瀏覽器中的 cookies。 Flash 檔案會(huì)測(cè)試獲得許可來設(shè)定客戶端的 cookies 以及允許使用儲(chǔ)存於 cookies 中的資料,檔案也可以讀取 cookies 內(nèi)容且呈現(xiàn)在螢?zāi)簧稀? 下載中有二個(gè)檔案:一個(gè)是英文的 .fla ,另一檔案是用德文。編譯檔 .swf 僅是德文。 使用者介面使用者介面分為以下三個(gè)部分來作說明: ![]() 圖一:Flash 中的使用者介面 Step 1:使用者按下 'START TEST' 按鈕會(huì)在 server 引發(fā)測(cè)試是否網(wǎng)頁(yè)的來訪者的瀏覽器接受 cookies。Status message 會(huì)現(xiàn)顯是否接受 cookies。 Step 2:在這例子 cookies 會(huì)被接受,F(xiàn)lash movie 執(zhí)行到第二的部分,並等待資料被儲(chǔ)存在 cookie。按一下 'SEND DATA' 按鈕,資料會(huì)傳送到 server。 Step 3:最後部分,server 將 cookie 資料送回 Flash 檔案,會(huì)將它們寫入文字欄位 (text fields)。 Flash 檔的 ScriptsFlash 檔的圖案是根據(jù)標(biāo)準(zhǔn)的程序建立的,因而無(wú)法詳細(xì)來描述。 名稱 'Sourcecode' 的圖層 (layer) 是重要的,包含F(xiàn)lash 檔案的程式碼,我們現(xiàn)在就來詳細(xì)說明。 ![]() 圖二: Flash 中的時(shí)間軸 //Frame 1Set Variable: "cookies" = "false"stop 變數(shù) 'cookies' 被初始化為字串 'false',當(dāng) server 不回傳布林值 true 和 false 時(shí),會(huì)使用 'false'。但字串含有值 "true" 或 "false" 時(shí),F(xiàn)lash 就等待按鈕來啟動(dòng) cookie 測(cè)試。 //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 狀態(tài)欄會(huì)依測(cè)試結(jié)果展現(xiàn)出不同訊息。 如果不接受 cookies,F(xiàn)lash 就會(huì)跳到標(biāo)籤 'nocookies',停在那裡,而且除了另外的 cookies 測(cè)試外不接受任何的輸入。在 if 條件據(jù) cookies eq "true" 用引號(hào)設(shè)定,因?yàn)?server並部會(huì)真正的傳回布林值 true 或 false,但是字串就其本身卻能馬上測(cè)試。同時(shí)注意字串的比較必須是使用 'eq' 而不是 '='。 'stop' 命令使得 Flash 必須等待 'SEND DATA' 按鈕 click 事件。將 cookie 資料送到 server 端會(huì)像這樣 : //Frame11, Label step2Load Variables ("/setcookies.asp?cookiename="&name&"&"&"cookiemail="&email&"&"&"cookietelephone="&telephone, 0)這個(gè) script 中,請(qǐng)求字串 (query string) 包含使用者輸入的資料會(huì)送到檔案 ' setcookies.asp'。關(guān)於字串的組成,請(qǐng)參考文章 'Data Exchange between ASP and Flash' (僅德文)。 //Frame19, Label step3Load Variables ("/getcookies.asp", 0)ASP 從 cookie 中讀取資料會(huì)被載入 Flash 檔案中。 //Frame 28Stop 在短暫的線段動(dòng)畫後,載入的資料會(huì)呈現(xiàn)在文字欄位 (text fields)。 //Frame 35, Label nocookiesstop 如果在 frame 10 不允許任何的 cookies,F(xiàn)lash 時(shí)間軸會(huì)分入到這個(gè) frame,而使用者就有機(jī)會(huì)執(zhí)行另外的測(cè)試。 ASP 檔案的 Scripts這三個(gè)檔案 testcookies.asp,setcookies.asp 以及 getcookies.asp 會(huì)被 Flash 呼叫執(zhí)行以下動(dòng)作: 檢查瀏覽器是否接受 cookies (testcookies.asp),設(shè)定 cookies (setcookies.asp),讀取 cookies(getcookies.asp)。 檢查瀏覽器是否接受 cookies檔案 testcookies.asp 檢查瀏覽器是否允許 cookies。 這個(gè)技巧與這篇文章 "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)%>簡(jiǎn)單的說,這個(gè) script 設(shè)定一個(gè) session 變數(shù),執(zhí)行轉(zhuǎn)跳 (redirect) 到它自己本身,然後檢查該值是否還設(shè)定在 session 變數(shù)中。為了讓值仍然保存,瀏覽器必須已經(jīng)接受 Internet Information Server (IIS) 的 session cookie,然後再由 ASP 送到瀏覽器。這意味著,瀏覽器接受 cookies ,當(dāng)這個(gè) session 變數(shù)的值在轉(zhuǎn)跳 (redirect) 之後仍然還存在著。 如果瀏覽器接受 cookies,該檔案會(huì)傳回文字 'Cookies=true' 或是不接受的話,則傳回 'Cookies=false'。 當(dāng) Flash 藉由命令 Load Variables 來呼叫檔案 testcookies.asp,ASP 檔案會(huì)傳回字串 "Cookies=true" 或 "Cookies=false" 到 Flash 檔案,然後在 Flash 中設(shè)定該變數(shù) Cookies 為 "true" 或 "false" 。 設(shè)定 Cookies在 ASP 中 cookies 可以很容易使用 Response.Cookies 集合設(shè)定。在我們的例子中,這個(gè) Flash 檔案呼叫檔案 setcookies.asp ,然後傳送在 Querystring 中 cookies (names and values) 變數(shù)到 ASP Script。 ASP Script 會(huì)從 Querystring 集合讀取所有的值,藉由 Response.Cookies 送出對(duì)應(yīng)的 cookies 到瀏覽器。整個(gè) ASP script 只有三行: <%For each item in Request.QueryStringResponse.Cookies(item) = Request.Querystring(item) Next%> 讀取 Cookies讀取 Cookies 以及將它們寫入 Flash 檔案中就像設(shè)定 cookies 一樣簡(jiǎn)單,當(dāng) Flash 檔案呼叫檔案getcookies.asp,會(huì)以 URL 編碼文字傳回所有的 cookies 的名稱和值。這樣一來, 當(dāng) Flash 呼叫檔案 getcookies.asp,cookies 的值會(huì)寫入 Flash 檔案同樣名稱的變數(shù)中 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%> 結(jié)論這篇文章的 Flash 部分是使用 Flash 4,對(duì)於 Macromedia 軟體新的版本 Version 5 的整個(gè)系統(tǒng)架構(gòu)是同樣的。 ASP 部分可以在 IIS 4.0 以及 IIS 5.0 上來執(zhí)行,且只要稍作修改也能在 ASP.NET 上執(zhí)行。 在這篇文章描述了與 ASP 有關(guān)的 cookies 設(shè)定以及讀取,在之後會(huì)有一篇文章,將藉由目前這個(gè) Flash 中使用 cookies 的簡(jiǎn)單個(gè)人化設(shè)定基本架構(gòu),做更進(jìn)一步來發(fā)展。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!