程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP入門教程 >> ASP中Cookie使用指南

ASP中Cookie使用指南

編輯:ASP入門教程
我自己曾想寫一篇關於CookIE的文章,特別是ClIEnt端Script同ServerASP通過CookIE交互的問題可能會困擾大家。其實是如
果你對CookIE有深入的理解,特別是對域和路徑的概念比較清晰的話,就不會有問題了。
另外想提示的一點是request.ServerVariables("HTTP_COOKIE")得到Cookie和Request.CookIEs得到的結果可能會有所不同。
大家思考一下為什麼,會對ASP的學習提高有所幫助的。

Request.CookIEs,粒子:

<TABLE BORDER="2">
<THEAD>
<TH>CookIE Name</TH>
<TH>CookIE Value</TH>
<TH>CookIE HasKeys</TH>
</THEAD>
<%
Dim Item
For Each Item in Request.CookIEs
%>
<TR>
<TD><% = Item %></TD>
<TD><% = Request.CookIEs(Item) %></TD>
<TD><% = Request.CookIEs(Item).HasKeys %></TD>
</TR>
<TR>
<%
   If Request.CookIEs(Item).HasKeys Then
     For Each strSubKey In Request.CookIEs(Item)
%>
<TD>&bnsp;</TD>
<TD>&bnsp;</TD>
<TD><% = Request.CookIEs(strKey)(strSubKey) %></TD>
<%
Next
End If
Next
%>
</TABLE>

request.ServerVariables("HTTP_COOKIE"),粒子:
<TABLE BORDER="2">
<THEAD>
<TH>CookIE Name</TH>
<TH>CookIE Value</TH>
</THEAD>
<%
Dim Item,sp,i,d
sp = split(request.ServerVariables("HTTP_COOKIE"),"; ",-1,1)
Loop through the cookie collection displaying each cookIE we find

For i=0 to UBound(sp)
d = split(cstr(sp(i)),"=",-1,1)
%>
<TR>
<TD><% = d(0) %></TD>
<TD><% if UBound(d)=1 then Response.Write(d(1)) else Response.Write "&nbsp;" %></TD>
</TR>
<%
Next
%>
</TABLE>
重粒子@Y2K0814
--------------------------------------------------------
下面是甘冀平翻譯的<ASP中CookIE使用指南>

   實際上,在web開發中,cookIE僅僅是一個文本文件,當用戶訪問站點時,它就被存儲在用戶使用的計算機上,其中,保存了
一些信息,當用戶日後再次訪問這個站點時,web可以將這些信息提取出來。

   盡管現在聽起來cookIE沒有什麼激動人心的,但實際上利用它,你能實現許多有意義的功能!比如說:你可以在站點上放置
一個調查問答表,詢問訪問者最喜歡的顏色和字體,然後根據這些定制用戶的web界面。並且,你還可以保存訪問者的登錄密碼,這
樣,當訪問者再次訪問這個站點時,不用再輸入密碼進行登錄。

   當然,cookie也有一些不足。首先,由於利用cookIE的功能可以編程實現一些不良企圖,所以大多數的浏覽器中都有安全設
定,其中可以設置是否允許或者接受cookie,因此這就不能保證隨時能使用cookIE。再者,訪問者可能有意或者無意地刪除
cookie。當訪問者的機器遇到“藍屏”死機時,或者重新格式化硬盤、安裝系統後,原來保存的cookIE將全部丟失。最後一點,有
一些最初始的浏覽器並不能支持cookIE。
利用cooklIE能做什麼?

   有2種使用cookIE的基本方式:
1、將cookIE寫入訪問者的計算機(使用 RESPONSE 命令)
2、從訪問者的計算機中取回cookIE(使用 REQUEST 命令)

   創建cookIE的基本語法

   Response.Cookies("CookIEName")=value

   執行下面的代碼將會在訪問者的計算機中創建一個cookIE,名字=VisitorName,值=Ken
Response.CookIEs("VisitorName")="Ken"

   執行下面的代碼將會在訪問者的計算機中創建一個cookIE,名字=VisitorName,值=表單中UserName的值
Response.CookIEs("VisitorName")=Request.Form("UserName")

   讀取cookIE的基本語法

   Request.Cookies("CookIEName")

   可以將Request值當作一個變量看待,執行下面的代碼,將取回名字為KensCookie的cookIE值,並存入變量MyVar:
MyVar=Request.Cookies("KensCookIE")

   執行下面的代碼,將判斷名字為KensCookie的cookIE值是否為“Yes”:
If Request.Cookies("KensCookIE")="Yes" then

   功能豐富的cookIE

   你可以擴展上面的代碼成為Cookie子關鍵值(CookIESubName),代碼如下:
Response.CookIEs("VisitorName")("FirstName")="Ken"
Response.CookIEs("VisitorName")("LastName")="Baumbach"

   講解例子前,最後討論2個概念:命令約定和使用到期時間。

   命名約定

   同其他變量的命名一樣,合適地、獨特地命名cookIE,有利於在程序中前後連貫地使用它。你可以使用下面的1個或者2個
cookie屬性進行cookIE變量的命名:

   域屬性(Domain):域屬性表明cookie由哪個網站產生或者讀取,默認情況下,cookIE的域屬性設置為產生它的網站,但你
也可以根據需要改變它。相關代碼如下:Response.Cookies("CookIEName").Domain = "www.mydomain.com"

   路徑屬性(Path):路徑屬性可以實現更多的安全要求,通過設置網站上精確的路徑,就能限制cookIE的使用范圍。例如:
Response.Cookies("CookIEName").Path = "/maindir/subdir/path"

   使用到期時間

   通常情況下,當浏覽器關閉時,一個cookIE就不存在了。但是在許多時候,比如下面將要討論的web站點例子,我們希望能更
長時間地在訪問者的計算機上保存cookie。很幸運,有這樣的實現方法。下面的代碼,就可以設置cookIE的使用到期時間為2010年
1月1日:
Response.Cookies("CookIEName").Expires=#January 01, 2010#

   執行下面的代碼,將設定cookie的過期時間為“cookIE的創建時間+365日”:
Response.Cookies("CookIEName")=Date+365

   使用cookIE的實際例子(非常精彩)

   現在開始討論實際的例子。假設:你想做一個調查,每個人初次訪問時需要填寫好信息,但是當日後再訪問時,就不需要再那
麼做。利用cookIE,就可以非常圓滿地解決這個問題,而大可不必用到數據庫。

< %@ 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
% >
   好,下面開始從頭討論上面的代碼。

   首先,初始設置頁面,並讀取名字為KensSurvey的cookIE值:


< %@ LANGUAGE="VBSCRIPT" % >

> < %
Survey=Request.CookIEs("KensSurvey")
   然後,判斷是否已經存在cookIE值:

If Survey ="" then
   如果不存在, 就創建並設置cookIE,並轉到頁面survey.ASP。 當下一次訪問時,因為存在cookIE值,就不會再轉到
survey.ASP 頁面。

    Response.CookIEs("KensSurvey")="x"
    Response.CookIEs("KensSurvey").Expires=#January 01, 2010#
    Response.Redirect "survey.ASP"
   如果cookIE已經存在,那麼訪問者將執行頁面中剩余的代碼:

rest of the page

End if
% >
   例子2

   這裡有另外一個簡單的例子:當訪問者第1次浏覽某個站點時,向他們顯示歡迎信息。代碼如下:

< %@ 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 >Lets be frIEnds< /H2 >
   Whats your name (leave blank and hit the Submit button if you dont 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
% >
   好,現在來看看上面的代碼實現執行了什麼。首先,設置頁然後,檢查表單變量(在同一個頁面中)。如果表單變量存
在,就創建cookIE,並設置到期時間。

< %@ 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在訪問者的計算機上不存在,就創建一個表單,詢問相關信息:

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 >Lets be frIEnds< /H2 >
   Whats your name (leave blank and hit the Submit button if you dont 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已經存在,並且用戶名字存在,就顯示給訪問者一個歡迎界面,然後執行其余的代碼。

If VisitorName <   > "" then
   Response.write "Hi, " & VisitorName & "!   I hope you are having a great day!"
End if
rest of the page
% >
   盡管上面的這個例子很簡單,但可以從中擴展許多富有創造力的應用。你可以在表單中加入許多功能,以便定制化web站點。
你還可以讓訪問者定制網站的色彩、字體,以至於其他Web元素。有可能的話,你可以詢問訪問者的生日,當訪問者在那一天來訪
時,你就可以顯示“生日快樂”的信息給他。

   如你所見,cookIE的擴展性是無窮的,這篇文章僅僅是拋磚引玉。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved