淺談ASP對Cookie操作的詳細講解
Cookie是一種發(fā)送到客戶瀏覽器的文本串句柄,并保存在客戶機硬盤上,可以用來在某個Web站點會話之間持久地保持數(shù)據(jù)。Request和Response對象都有一組Cookie。Request.cookie集合是一系列Cookie,從客戶端與HTTPRequest一起發(fā)送到Web服務器。反過來,如果你希望把Cookie發(fā)送到客戶機,就可以使用Response.cookie
1、ExpiresAbsolute屬性
該屬性可以賦一個日期,過了這個日期Cookie就不能再被使用了。通過給Expires屬性賦一個過期的日期,就可以刪除Cookie。如:
<%response.cookies("passtime").expiresabsolute=>
2、Domain屬性
該屬性定義Cookie要傳送的唯一域。如:Cookie只傳送給Microsoft的人,則可以使用以下代碼。
<%response.cookies("domain").domain="www.microsoft.com"%>
3、ASP用來寫入Cookie即向客戶機發(fā)送Cookie的語法如下:
Response.Cookie("Cookie名").[("鍵名").屬性]=內(nèi)容
如果某個ASP文件要創(chuàng)建一個Cookie,則下面的代碼可以放在ASP文件的第一個之前,以避免產(chǎn)生錯誤.
<%response.cookies("cookiename")="newcookie"%>
......
4、同樣ASP用Request對象的Cookies集合來讀取Cookie,如:
<%response.writerequest.cookies("cookiename")%>
下面以一個完整的例子來說明Cookie:
<%
dimNum
Num=Request.Cookies("Visit_num")
ifNum>0then
Num=Num+1
Response.write"您已是第"&Num&"次訪問本站點了。"
else
Response.write"歡迎您首次訪問本站。"
Num=1
endif
Response.Cookies("Visit_num")=Num
%>
在該例子中,首先讀取Cookies變量Visit_num,看用戶端計算機是否保存有Cookies變量。如果有該變量,則說明用戶已經(jīng)訪問過該頁面,同時輸入出訪問次數(shù)。如果用戶是首次訪問該頁面,則其計算機內(nèi)不會有Cookies變量,程序會顯示“歡迎”字樣,然后將Cookies變量Visit_num存到用戶計算機中,以便該用戶下一次訪問該頁面時給出“訪問的`次數(shù)”信息。
5、Cookie字典
有時在一個頁面中可能需要定義很多個Cookies變量,為了更好地管理它,在Cookies組件中常引入一人的概念“子鍵”。引用它的語法如下:
Request.Cookies("變更名")("子鍵名")
如下面的Cookie創(chuàng)建一個名為"Dictionary"的字典,其中保存了三個鍵值:
<%
Response.Cookie("info")("Myname")="jeff"
Response.Cookie("info")("Gender")="male"
Response.Cookie("info")("Myheight")="172"
%>
事實上客戶機上的Cookie字典是以字符串的形式存在:
info=Myname=jeff&Gender=male&Myheight=172
如果用戶沒有指定“子鍵”名而直接引用Cookies變量,將會返回一個包含所有的“子鍵”名及值的字符串。例如上面這個例子包含三個“子鍵”:"Myname"、"Gender"和"Myheight",當用戶沒有指定其“子鍵”而直接通過Request.Cookies("info")來引用時,則會得到下列字符串:
info=Myname=jeff&Gender=male&Myheight=172
如果要把Cookie中讀取的所有數(shù)據(jù),可以用下面的代碼得到:
<%ForeachcookieinRequest.Cookies
ifNotcookie.HasKeysthen
Response.writecookie&"="&Request.Cookies(cookie)
Else
foreachkeyinRequest.Cookies(cookie)
Response.writecookie&"("&key&")"&"="&Request.Cookies(cookie)(key)
next
endif
next
%>