麻辣家族討論版版's Archiver

小誌 發表於 2010-5-12 18:17

(ASP教學第10篇) Cookies 記錄物件

[color=Green][size=4][b]Cookies物件[/b][/size][/color]
Application 物件與 Session 物件將資訊記錄在 Server端,而 Cookies物件會藉由瀏覽器所提供之Cookies功能,將資訊記錄在客戶端,也就是說: Cookies 物件是儲存在瀏覽連線者的瀏覽器之中!

我們可用 Cookies 物件的紀錄來判斷某個使用者是否曾經進入本網站。奇怪!雖然Session 物件將資訊記錄在 Server端,但是它也會個別紀錄連線瀏覽者是否曾經進入本網站啊!但是Session 物件的生存期限是很短的,當瀏覽連線者的瀏覽器在設定時間內(預設為20分鐘)沒有向伺服器要求任何資料的話,伺服器就會將Session 物件中的資料全數消除,而 Cookies 物件是存在於瀏覽連線者的瀏覽器中的,即使是瀏覽者離線了,Cookies 物件的資料記錄依然存在!

Cookies 物件是 Response 物件及 Request 物件之屬性,用法如下:[code]Response.cookies 寫入Cookies
Request.cookies 讀取Cookies[/code][color=Red]
如何證明 Cookies 物件是儲存在瀏覽連線者的瀏覽器之中?[/color]
撰寫一含有 Cookies 的網頁, 如下所示:
[attach]296[/attach][code]<%
var=request.cookies("var")
if var="" then var=empty
respone.write "開始 Var=" & var "<br>"
var=var+10
response.write "結束 Var=" & var "<br>"
response.cookies("var")=var
%>[/code]執行後會產生卻會產生『型態不符合』的錯誤,如下圖:
[attach]297[/attach]

怎會如此呢?原因如下: Application物件及Session物件其傳回值為empty而 request.cookies卻是傳回 "" (空字串),empty可與數值作運算,"" 卻不可以,解決此一問題可加入一判斷式,如下所示:[code]if var="" then var=empty
' 如果var="",則將var設定成empty[/code][attach]298[/attach]

[color=Red]修改後還是有錯誤,錯誤為『已將HTTP標題寫入用戶端瀏覽器。 對任何HTTP的標題所做的修改必須要在寫入頁內容之前』。[/color]
[attach]299[/attach]

原因為瀏覽器與伺服端交換 Cookies資料的時機需在伺服器尚未下載資料給瀏覽器之前就進行交換,否則會出現錯誤,解決方法為用 緩衝區來裝下載的資料,完整程式如下所示:
[attach]300[/attach][code]<%
response.buffer=true

var=request.cookies("var")
if var="" then var=empty
response.write "開始 Var=" & var & "<br>"
var=var+10
response.write "結束 Var=" & var & "<br>"
response.cookies("var")=var
%>[/code]現在我們來檢驗一下:以IE 為例,建立在瀏覽器中的 Cookies 物件將會放置在『\WINDOWS\Temporary Internet Files』目錄中,我們先將目錄中的所有資料檔案清除乾淨:
[attach]301[/attach]
接著啟動瀏覽器,開始瀏覽 cookies02.asp ,此時我們將會發現在『\WINDOWS\Temporary Internet Files』目錄中多出了Cookies 的物件檔案,這證明了Cookies 物件是存在於瀏覽連線者的瀏覽器(客戶端)中無誤!
[attach]302[/attach]

Cookies 物件的生命週期起始於瀏覽器被執行時。終止於瀏覽器結束執行時。那如果我們要延長Cookies 物件的生命週期呢?若要延長Cookies 物件的生命週期我們可另用『Expires』屬性來設定Cookies的生命週期,Expires表失效 ,如下所示:[code]response.cookies("yourID")="cookies"  
response.cookies("yourID").expires="2000/12/31/"[/code]經過expires設定後,yourID之使用期限為2000/12/31。

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供