當然,您實際上並非直接變更 Cookie。雖然您可以從 Request.Cookies 集合取得 Cookie 並加以管理,但 Cookie 本身仍存在使用者硬碟中。因此修改 Cookie 事實上是以新的值建立新的 Cookie,然後將此 Cookie 傳送至瀏覽器來覆寫用戶端上的舊版本。
下列範例顯示如何變更儲存使用者造訪網站次數的 Cookie 值:
Dim counter As Integer
If Request.Cookies("counter") Is Nothing Then
counter = 0
Else
counter = CInt(Request.Cookies("counter").Value)
End If
counter += 1
Response.Cookies("counter").Value = counter.ToString
Response.Cookies("counter").Expires = DateTime.Now.AddDays(1)
或Dim ctrCookie As HttpCookie
Dim counter As Integer
If Request.Cookies("counter") Is Nothing Then
ctrCookie = New HttpCookie("counter")
Else
ctrCookie = Request.Cookies("counter")
End If
counter = CInt(ctrCookie.Value) + 1
ctrCookie.Value = counter.ToString
ctrCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(ctrCookie)
刪除 Cookie刪除 Cookie —實際將它從使用者的硬碟中移除 — 也是修改的一種。您不可以直接移除 Cookie,因為此 Cookie 在使用者的電腦中。不過,您可以讓瀏覽器為您刪除 Cookie。技巧在於以上述方式修改 Cookie (也就是使用相同名稱建立新的 Cookie),但是將 Cookie 的到期日設定為比今天還早。當瀏覽器檢查 Cookie 到期日時,瀏覽器就會捨棄已經過時的 Cookie。
因此,刪除任何一個 Cookie 與建立 Cookie 的方法相同,只是使用比今天還早的日期。下列範例比刪除單一 Cookie 還有趣 — 其中顯示刪除目前網域中所有 Cookie 的一種方法:
Dim i As Integer
Dim cookieName As String
Dim limit As Integer = Request.Cookies.Count - 1
For i = 0 To limit
aCookie = Request.Cookies(i)
aCookie.Expires = DateTime.Now.AddDays(-1)
Response.Cookies.Add(aCookie)
Next
修改或刪除子機碼修改個別子機碼與建立子機碼的方法相同:
Response.Cookies("userInfo")("lastVisit") = DateTime.Now.ToString
Response.Cookies("userInfo").Expires = DateTime.Now.AddDays(1)
更複雜的問題是如何個別刪除子機碼。您不僅是重設 Cookie 的到期時間,因為那會移除整個 Cookie 而不是單一子機碼。解決方法是管理保存子機碼的 Cookie Values 集合。首先從 Request.Cookies 物件中取得 Cookie 以重新建立 Cookie。然後呼叫 Values 集合的 Remove 方法,將要刪除的子機碼名稱傳送給 Remove 方法。然後和平常一樣,您可以將修改過的 Cookie 加入 Response.Cookies 集合中,將修改完成的 Cookie 傳回給瀏覽器。下列程式碼顯示如何刪除子機碼。在此範例中,以變數來指定要移除的子機碼名稱。
Dim subkeyName As String
subkeyName = "userName"
Dim aCookie As HttpCookie = Request.Cookies("userInfo")
aCookie.Values.Remove(subkeyName)
aCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(aCookie)<SPAN style="DISPLAY: none" id=1255069907985S _fck_bookmark="true"> </SPAN>
沒有留言:
張貼留言