Web瀏覽器和伺服器使用HTTP協議進行通信,HTTP是一種無狀態協議。但是對於一個商業網站來說,需要維護不同頁面之間的會話信息。例如,一個用戶註冊在完成多個頁面後結束。但是如何在所有網頁上維護用戶的會話信息。在許多情況下,使用cookies是記憶和跟蹤偏好、購買、佣金和其他信息的最有效方法,這些信息是更好的訪客體驗或網站統計所需的。
How It Works?
伺服器以cookie的形式向訪問者的瀏覽器發送一些數據。瀏覽器可能接受cookie。如果是,它將作爲純文本記錄存儲在訪問者的硬碟上。現在,當訪問者到達站點上的另一個頁面時,瀏覽器會將相同的cookie發送到伺服器進行檢索。一旦檢索到,伺服器就會知道/記住先前存儲的內容。Cookies是5個可變長度欄位的純文本數據記錄;
Expires−cookie將過期的日期。如果爲空,則當訪問者退出瀏覽器時,cookie將過期。
域−站點的域名。
Path−設置cookie的目錄或網頁的路徑。如果要從任何目錄或頁面檢索cookie,則此項可能爲空。
Secure−如果此欄位包含單詞「Secure」,則只能使用安全伺服器檢索cookie。如果此欄位爲空,則不存在此類限制。
Name=Value−Cookies以鍵和值對的形式設置和檢索。
Cookies最初是爲CGI編程而設計的,Cookies的數據在web瀏覽器和web伺服器之間自動傳輸,因此伺服器上的CGI腳本可以讀寫存儲在客戶端上的cookie值。
VBScript還可以使用文檔對象的cookie屬性操作cookie。VBScript可以讀取、創建、修改和刪除應用於當前網頁的一個或多個cookie。
Storing Cookies
創建cookie的最簡單方法是爲document.cookie對象分配一個字符串值,它看起來像這樣−
Syntax
document.cookie = "key1 = value1;key2 = value2;expires = date"
這裡expires屬性是可選的。如果您爲該屬性提供了有效的日期或時間,則cookie將在給定的日期或時間過期,之後cookie的值將不可訪問。
Example
下面是在輸入cookie中設置客戶名稱的示例。
<html> <head> <script type = "text/vbscript"> Function WriteCookie If document.myform.customer.value = "" Then msgbox "Enter some value!" Else cookievalue = (document.myform.customer.value) document.cookie = "name = " + cookievalue msgbox "Setting Cookies : " & "name = " & cookievalue End If End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>
它將產生以下結果。現在在文本框中輸入一些內容,然後按「設置Cookie」按鈕設置Cookie。
現在,您的系統有一個名爲name的cookie。您可以使用逗號分隔的多個key=value對設置多個cookie。下一節將學習如何閱讀此cookie。
Reading Cookies
讀取cookie和編寫cookie一樣簡單,因爲document.cookie對象的值就是cookie。所以,只要想訪問cookie,就可以使用這個字符串。document.cookie字符串將保留一個由分號分隔的name=value對的列表,其中name是cookie的name,value是其字符串值。可以使用strings'split()函數將字符串分解爲鍵和值,如下所示−
Example
下面是獲取上一節中設置的cookies的示例−
<html> <head> <script type = "text/vbscript"> Function ReadCookie allcookies = document.cookie msgbox "All Cookies : " + allcookies cookiearray = split(allcookies,";") For i = 0 to ubound(cookiearray) Name = Split(cookiearray(i),"=") Msgbox "Key is : " + Name(0) + " and Value is : " + Name(1) Next End Function </script> </head> <body> <form name = "myform" action = ""> <input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/> </form> </body> </html>
注意,UBound是Array類的一種方法,它返回數組的長度。我們將在單獨的一章中討論數組;在此之前,請嘗試消化它。
它將產生以下結果。現在,按「獲取Cookie」按鈕查看您在上一節中設置的Cookie。
注意−您的計算機上可能已經設置了一些其他cookie。所以,上面的代碼將顯示在您的機器上設置的所有cookie。
Setting the Cookies Expiration Date
通過設置過期日期並在cookie中保存過期日期,可以將cookie的壽命延長到當前瀏覽器會話之外。這可以通過將expires屬性設置爲日期和時間來完成。
Example
下面的示例演示如何在1個月後設置cookie過期日期−
<html> <head> <script type = "text/vbscript"> Function WriteCookie() x = now() y = dateadd("m",1,now()) ' Making it to expire next cookievalue = document.myform.customer.value document.cookie = "name = " & cookievalue document.cookie = "expires = " & y msgbox("Setting Cookies : " & "name=" & cookievalue ) End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>
Deleting a Cookie
有時,您會希望刪除cookie,以便隨後讀取cookie的嘗試不會返回任何結果。爲此,只需將到期日期設置爲過去的某個時間。
Example
下面的示例演示了如何通過將cookie的過期日期設置爲過去1個月−