|
甘冀平翻譯的<ASP中Cookie使用指南>
實(shí)際上,在web開(kāi)發(fā)中,cookie僅僅是一個(gè)文本文件,當(dāng)用戶訪問(wèn)站點(diǎn)時(shí),它就被存儲(chǔ)在用戶使用的計(jì)算機(jī)上,其中,保存了 一些信息,當(dāng)用戶日后再次訪問(wèn)這個(gè)站點(diǎn)時(shí),web可以將這些信息提取出來(lái)。
盡管現(xiàn)在聽(tīng)起來(lái)cookie沒(méi)有什么激動(dòng)人心的,但實(shí)際上利用它,你能實(shí)現(xiàn)許多有意義的功能!比如說(shuō):你可以在站點(diǎn)上放置 一個(gè)調(diào)查問(wèn)答表,詢問(wèn)訪問(wèn)者最喜歡的顏色和字體,然后根據(jù)這些定制用戶的web界面。并且,你還可以保存訪問(wèn)者的登錄密碼,這 樣,當(dāng)訪問(wèn)者再次訪問(wèn)這個(gè)站點(diǎn)時(shí),不用再輸入密碼進(jìn)行登錄。
當(dāng)然,cookie也有一些不足。首先,由于利用cookie的功能可以編程實(shí)現(xiàn)一些不良企圖,所以大多數(shù)的瀏覽器中都有安全設(shè) 定,其中可以設(shè)置是否允許或者接受cookie,因此這就不能保證隨時(shí)能使用cookie。再者,訪問(wèn)者可能有意或者無(wú)意地刪除 cookie。當(dāng)訪問(wèn)者的機(jī)器遇到“藍(lán)屏”死機(jī)時(shí),或者重新格式化硬盤(pán)、安裝系統(tǒng)后,原來(lái)保存的cookie將全部丟失。最后一點(diǎn),有 一些最初始的瀏覽器并不能支持cookie。
利用cooklie能做什么?
有2種使用cookie的基本方式: 1、將cookie寫(xiě)入訪問(wèn)者的計(jì)算機(jī)(使用 RESPONSE 命令) 2、從訪問(wèn)者的計(jì)算機(jī)中取回cookie(使用 REQUEST 命令)
創(chuàng)建cookie的基本語(yǔ)法
Response.Cookies("CookieName")=value
執(zhí)行下面的代碼將會(huì)在訪問(wèn)者的計(jì)算機(jī)中創(chuàng)建一個(gè)cookie,名字=VisitorName,值=Ken Response.Cookies("VisitorName")="Ken"
執(zhí)行下面的代碼將會(huì)在訪問(wèn)者的計(jì)算機(jī)中創(chuàng)建一個(gè)cookie,名字=VisitorName,值=表單中UserName的值 Response.Cookies("VisitorName")=Request.Form("UserName")
讀取cookie的基本語(yǔ)法
Request.Cookies("CookieName")
可以將Request值當(dāng)作一個(gè)變量看待,執(zhí)行下面的代碼,將取回名字為KensCookie的cookie值,并存入變量MyVar: MyVar=Request.Cookies("KensCookie")
執(zhí)行下面的代碼,將判斷名字為KensCookie的cookie值是否為“Yes”: If Request.Cookies("KensCookie")="Yes" then
功能豐富的cookie
你可以擴(kuò)展上面的代碼成為Cookie子關(guān)鍵值(CookieSubName),代碼如下: Response.Cookies("VisitorName")("FirstName")="Ken" Response.Cookies("VisitorName")("LastName")="Baumbach"
講解例子前,最后討論2個(gè)概念:命令約定和使用到期時(shí)間。
命名約定
同其他變量的命名一樣,合適地、獨(dú)特地命名cookie,有利于在程序中前后連貫地使用它。你可以使用下面的1個(gè)或者2個(gè) cookie屬性進(jìn)行cookie變量的命名:
域?qū)傩裕―omain):域?qū)傩员砻鱟ookie由哪個(gè)網(wǎng)站產(chǎn)生或者讀取,默認(rèn)情況下,cookie的域?qū)傩栽O(shè)置為產(chǎn)生它的網(wǎng)站,但你 也可以根據(jù)需要改變它。相關(guān)代碼如下:Response.Cookies("CookieName").Domain = "www.mydomain.com"
路徑屬性(Path):路徑屬性可以實(shí)現(xiàn)更多的安全要求,通過(guò)設(shè)置網(wǎng)站上精確的路徑,就能限制cookie的使用范圍。例如: Response.Cookies("CookieName").Path = "/maindir/subdir/path"
使用到期時(shí)間
通常情況下,當(dāng)瀏覽器關(guān)閉時(shí),一個(gè)cookie就不存在了。但是在許多時(shí)候,比如下面將要討論的web站點(diǎn)例子,我們希望能更 長(zhǎng)時(shí)間地在訪問(wèn)者的計(jì)算機(jī)上保存cookie。很幸運(yùn),有這樣的實(shí)現(xiàn)方法。下面的代碼,就可以設(shè)置cookie的使用到期時(shí)間為2010年 1月1日: Response.Cookies("CookieName").Expires=#January 01, 2010#
執(zhí)行下面的代碼,將設(shè)定cookie的過(guò)期時(shí)間為“cookie的創(chuàng)建時(shí)間+365日”: Response.Cookies("CookieName")=Date+365
使用cookie的實(shí)際例子(非常精彩)
現(xiàn)在開(kāi)始討論實(shí)際的例子。假設(shè):你想做一個(gè)調(diào)查,每個(gè)人初次訪問(wèn)時(shí)需要填寫(xiě)好信息,但是當(dāng)日后再訪問(wèn)時(shí),就不需要再那 么做。利用cookie,就可以非常圓滿地解決這個(gè)問(wèn)題,而大可不必用到數(shù)據(jù)庫(kù)。
< %@ LANGUAGE="VBSCRIPT" %> < % Survey=Request.Cookies("KensSurvey") If Survey ="" then Response.Cookies("KensSurvey")="x" Response.Cookies("KensSurvey").Expires=#January 01, 2010# Response.Redirect "survey.asp" Else 'rest of the page End if % > 好,下面開(kāi)始從頭討論上面的代碼。
首先,初始設(shè)置頁(yè)面,并讀取名字為KensSurvey的cookie值:
< %@ LANGUAGE="VBSCRIPT" % > < % Survey=Request.Cookies("KensSurvey") 然后,判斷是否已經(jīng)存在cookie值:
If Survey ="" then 如果不存在, 就創(chuàng)建并設(shè)置cookie,并轉(zhuǎn)到頁(yè)面survey.asp。 當(dāng)下一次訪問(wèn)時(shí),因?yàn)榇嬖赾ookie值,就不會(huì)再轉(zhuǎn)到 survey.asp 頁(yè)面。
Response.Cookies("KensSurvey")="x" Response.Cookies("KensSurvey").Expires=#January 01, 2010# Response.Redirect "survey.asp" 如果cookie已經(jīng)存在,那么訪問(wèn)者將執(zhí)行頁(yè)面中剩余的代碼:
'rest of the page
End if % > 例子2
這里有另外一個(gè)簡(jiǎn)單的例子:當(dāng)訪問(wèn)者第1次瀏覽某個(gè)站點(diǎn)時(shí),向他們顯示歡迎信息。代碼如下:
< %@ LANGUAGE="VBSCRIPT" % > < % RequestName = Request.Form("Name") RequestLeaveMeAlone = Request.Form("LeaveMeAlone") If RequestName <>"" or RequestLeaveMeAlone <>"" then Response.Cookies("MySiteVisitorName") = RequestName Response.Cookies("MySiteVisitorName").Expires = #January 01, 2010# Response.Cookies("MySiteLeaveMeAlone") = RequestLeaveMeAlone Response.Cookies("MySiteLeaveMeAlone").Expires = #January 01, 2010# End if VisitorName = request.cookies("MySiteVisitorName") LeaveMeAlone = request.cookies("MySiteLeaveMeAlone")
If VisitorName ="" and LeaveMeAlone ="" then % > < HTML > < HEAD > < /HEAD > < body bgcolor="#ccffff" text="black" link="navy" vlink="purple" > < DIV ALIGN="CENTER" > < form action="index.asp" method="POST" > < H2 >Let's be friends< /H2 > What's your name (leave blank and hit the Submit button if you don't want us to know)? < input type="text" name="name" >< BR >< BR > < input type="hidden" name="LeaveMeAlone" value="x" > < input type="submit" value="Submit" > < /FORM > < /DIV > < /BODY > < % End if If VisitorName <> "" then Response.write "Hi, " & VisitorName & "!I hope you are having a great day!" End if 'rest of the page % > 好,現(xiàn)在來(lái)看看上面的代碼實(shí)現(xiàn)執(zhí)行了什么。首先,設(shè)置頁(yè)面。然后,檢查表單變量(在同一個(gè)頁(yè)面中)。如果表單變量存 在,就創(chuàng)建cookie,并設(shè)置到期時(shí)間。
< %@ LANGUAGE="VBSCRIPT" % > < % RequestName = Request.Form("Name") RequestLeaveMeAlone = Request.Form("LeaveMeAlone") If RequestName <>"" or RequestLeaveMeAlone <>"" then Response.Cookies("MySiteVisitorName") = RequestName Response.Cookies("MySiteVisitorName").Expires = #January 01, 2010# Response.Cookies("MySiteLeaveMeAlone") = RequestLeaveMeAlone Response.Cookies("MySiteLeaveMeAlone").Expires = #January 01, 2010# End if
接著,讀取cookie:
VisitorName = request.cookies("MySiteVisitorName") LeaveMeAlone = request.cookies("MySiteLeaveMeAlone") 如果cookie在訪問(wèn)者的計(jì)算機(jī)上不存在,就創(chuàng)建一個(gè)表單,詢問(wèn)相關(guān)信息:
If VisitorName ="" and LeaveMeAlone ="" then % > < HTML > < HEAD > < /HEAD > < body bgcolor="#ccffff" text="black" link="navy" vlink="purple" > < DIV ALIGN="CENTER" > < form action="index.asp" method="POST" > < H2 >Let's be friends< /H2 > What's your name (leave blank and hit the Submit button if you don't want us to know)? < input type="text" name="name" >< br >< br > < input type="hidden" name="LeaveMeAlone" value="x" > < input type="submit" value="Submit" > < /FORM > < /DIV > < /BODY > < % End if 如果cookie已經(jīng)存在,并且用戶名字存在,就顯示給訪問(wèn)者一個(gè)歡迎界面,然后執(zhí)行其余的代碼。
If VisitorName <> "" then Response.write "Hi, " & VisitorName & "!I hope you are having a great day!" End if 'rest of the page % > 盡管上面的這個(gè)例子很簡(jiǎn)單,但可以從中擴(kuò)展許多富有創(chuàng)造力的應(yīng)用。你可以在表單中加入許多功能,以便定制化web站點(diǎn)。 你還可以讓訪問(wèn)者定制網(wǎng)站的色彩、字體,以至于其他web元素。有可能的話,你可以詢問(wèn)訪問(wèn)者的生日,當(dāng)訪問(wèn)者在那一天來(lái)訪 時(shí),你就可以顯示“生日快樂(lè)”的信息給他。
如你所見(jiàn),cookie的擴(kuò)展性是無(wú)窮的,這篇文章僅僅是拋磚引玉。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!