Cookie提供了一種在Web應用程式中存儲使用者特定資訊的方法。例如使用者第一次浏覽Web網頁時,Cookie将會記錄下使用者登入的IP位址,在Cookie的有效期内,當該使用者再次發出浏覽比Web站點中頁面的請求時,浏覽器就會和伺服器交換Cookie資訊,識别該使用者的身份。本文章示例就是利用這個特性自定義Cookie對象來防止重複投票。
在本示例中,将用戶端的IP位址儲存在Cookie對象中,主要代碼如下:
//建立HttpCookie類型的對象并為它配置設定名稱為userID
HttpCookie newCookie = new HttpCookie(“userIP”) ;
//為Cookie的子項指派,即将用戶端IP位址賦給Cookie的子項,并将其命名為IPaddress
newCookie.Values.Add(“IPaddress”,UserIP);
//設定Cookie的失效期
newCookie.Expires=DateTime.MinValue;
//将該Cookie添加到Cookies集合中
Response.Cookies.Add(newCookie);
注意:在編寫代碼時,可以根據實際情況設定Cookie的實效期。如果沒有設定Cookie失效期,他們僅儲存到關閉浏覽器程式為止;如果将Cookie對象的Expires屬性設定為MinValue,則表示Cookie永遠不會過期。當然,還可以将Cookie對象的Expires屬性設定為具體某一天,例如将上述代碼中Cookie對象的失效期設定為目前系統時間的下一天,代碼如下:
newCookie.Expires =DateTime.Now.AddDays(1);
從Cookie中擷取用戶端的IP位址并判斷該IP位址是否已通路過網絡,如果已通路過,則彈出提示框,提示使用者,主要代碼如下:
//擷取用戶端IP位址
String UserIP=Request.UserHostAddress.ToString();
//擷取名為userIP的Cookie對象
HttpCookie oldCookie =Request.Cookies[“userIP”];
//判斷該Cookie對象是否存在
If(oldCookie!=null)
{
//從Cookie中擷取用戶端IP位址
String userIP =oldCookie.Values[“IPaddress”];
If(UserIP.Trim()==userIP.Trim())
{
Response.Write(“<script>alert(‘一個IP位址隻能投一次票,謝謝您的參與!’);history.go(-1);</script>”);
Return;
}
}