Cookie是一種發(fā)送到客戶瀏覽器的文本串句柄,并保存在客戶機(jī)硬盤上,可以用來在某個(gè)Web站點(diǎn)會(huì)話之間持久地保持?jǐn)?shù)據(jù)。Request和Response對(duì)象都有一組Cookie。Request.cookie集合是一系列Cookie,從客戶端與HTTP Request一起發(fā)送到Web服務(wù)器。反過來,如果你希望把Cookie發(fā)送到客戶機(jī),就可以使用Response.cookie
1、ExpiresAbsolute屬性
該屬性可以賦一個(gè)日期,過了這個(gè)日期Cookie就不能再被使用了。通過給Expires屬性賦一個(gè)過期的日期,就可以刪除Cookie。如:
%Response.cookies("passtime").expiresAbsolute="1/1/99"%>
2、Domain屬性
該屬性定義Cookie要傳送的唯一域。如:Cookie只傳送給Microsoft的人,則可以使用以下代碼。
%Response.Cookies("domain").Domain="www.microsoft.com"%>
3、ASP用來寫入Cookie即向客戶機(jī)發(fā)送Cookie的語法如下:
Response.Cookie("Cookie名").[("鍵名").屬性]=內(nèi)容
如果某個(gè)ASP文件要?jiǎng)?chuàng)建一個(gè)Cookie,則下面的代碼可以放在ASP文件的第一個(gè)html>之前,以避免產(chǎn)生錯(cuò)誤.
%Response.Cookies("CookieName")="NewCookie" %>
html>
......
/html>
4、同樣ASP用Request對(duì)象的Cookies集合來讀取Cookie,如:
%Response.write Request.Cookies("CookieName")%>
下面以一個(gè)完整的例子來說明Cookie:
復(fù)制代碼 代碼如下:
%
dim Num
Num=Request.Cookies("Visit_num")
if Num>0 then
Num=Num+1
Response.write "您已是第" Num "次訪問本站點(diǎn)了。"
else
Response.write "歡迎您首次訪問本站。"
Num=1
end if
Response.Cookies("Visit_num")=Num
%>
在該例子中,首先讀取Cookies變量Visit_num,看用戶端計(jì)算機(jī)是否保存有Cookies變量。如果有該變量,則說明用戶已經(jīng)訪問過該頁(yè)面,同時(shí)輸入出訪問次數(shù)。如果用戶是首次訪問該頁(yè)面,則其計(jì)算機(jī)內(nèi)不會(huì)有Cookies變量,程序會(huì)顯示“歡迎”字樣,然后將Cookies變量Visit_num存到用戶計(jì)算機(jī)中,以便該用戶下一次訪問該頁(yè)面時(shí)給出“訪問的次數(shù)”信息。
5、Cookie字典
有時(shí)在一個(gè)頁(yè)面中可能需要定義很多個(gè)Cookies變量,為了更好地管理它,在Cookies組件中常引入一人的概念“子鍵”。引用它的語法如下:
Request.Cookies("變更名")("子鍵名")
如下面的Cookie創(chuàng)建一個(gè)名為"Dictionary"的字典,其中保存了三個(gè)鍵值:
復(fù)制代碼 代碼如下:
%
Response.Cookie("info")("Myname")="jeff"
Response.Cookie("info")("Gender")="male"
Response.Cookie("info")("Myheight")="172"
%>
事實(shí)上客戶機(jī)上的Cookie字典是以字符串的形式存在:
info=Myname=jeffGender=maleMyheight=172
如果用戶沒有指定“子鍵”名而直接引用Cookies變量,將會(huì)返回一個(gè)包含所有的“子鍵”名及值的字符串。例如上面這個(gè)例子包含三個(gè)“子鍵”:"Myname"、"Gender"和"Myheight",當(dāng)用戶沒有指定其“子鍵”而直接通過Request.Cookies("info")來引用時(shí),則會(huì)得到下列字符串:
info=Myname=jeffGender=maleMyheight=172
如果要把Cookie中讀取的所有數(shù)據(jù),可以用下面的代碼得到:
復(fù)制代碼 代碼如下:
%For each cookie in Request.Cookies
if Not cookie.HasKeys then
Response.write cookie "=" Request.Cookies(cookie)
Else
for each key in Request.Cookies(cookie)
Response.write cookie"("key")""=" Request.Cookies(cookie)(key)
next
end if
next
%>
下面是具體的在頁(yè)面中記錄查詢的記錄的代碼
復(fù)制代碼 代碼如下:
Sub SetCookie
Dim C_DomainList,C_i
C_DomainList=Request.Cookies("jb51")("C_DomainList")
If Domain>"" and C_DomainList>"" then
If not instr(C_DomainList,Domain"|")>0 then C_DomainList=Domain"|"C_DomainList
End if
If Domain>"" and C_DomainList="" then
C_DomainList=Domain"|"
End if
If C_DomainList>"" then
Response.write "div id=C_domainlist>您關(guān)注的站點(diǎn):"
C_arrDomain = split(C_DomainList,"|")
C_DomainList=""
numDomain=ubound(C_arrDomain)-1
If numDomain>4 then numDomain=4
for C_i=0 to numDomain
Response.write " a href=?url="C_arrDomain(C_i)">"C_arrDomain(C_i)"/a> |"
C_DomainList=C_DomainListC_arrDomain(C_i)"|"
next
Response.Cookies("jb51")("C_DomainList")=C_DomainList
Response.Cookies("jb51").Expires=Date+30
Response.write "a href=# style=""cursor:pointer"" onClick=""clearCookie('jb51');alert('已清除記錄!');"">清除記錄/a>/div>"
End If
End Sub
演示頁(yè)面:http://tools.jb51.net/whois.asp