天天看點

ASP.NET利用Cookie處理網上重複投票

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;

  }

}