2009-10-21 23 views

回答

2

有你可以採取幾種不同的方法。

一個的做法是記錄每個人的ip地址。問題在於很多人都在路由器後面。如果你阻止用戶通過IP地址投票,那麼你可能會阻止尚未投票的人。

A 方法是要求用戶登錄。這是防止用戶多次投票的最可靠方法。這也是最涉及的。使用ASP.NET成員資格提供程序可以減少很多工作量。

A 第三方法是在用戶的計算機上設置一個cookie。他們可以輕鬆刪除cookie,但大多數用戶不知道他們在那裏,並不在乎。

1

使用此語句獲取IP。

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 

當人們投票,存儲IP數據庫,並檢查他們來到

OR

第二次

你可以存儲在客戶端的cookie的一些信息,並檢查了第二次

2

這是一個棘手的問題,我敢肯定你必須以某種方式作出權衡。

  1. 檢查IP作爲how to find client info in asp.net和HTTP_FORWARDED問題是,任何IP很容易被欺騙和兩個人使用同一臺計算機和/或具有動態IP:■

  2. 發送一封帶有確認

  3. 用戶必須在系統中註冊

  4. 需要一個OpenID

我會去4號

+0

+1 for OpenID。 :) – 2009-10-21 05:43:54

0

從遠程機器獲取MAC地址,並跟蹤它。

want to get mac address of remote PC

然而,正如我有理由相信,你不能這樣做,使用.NET,因爲你需要使用ManagementObjects,這將可能無法正常工作,這將是在C#中更復雜。

但是,如果您是通過asp.net進行此操作,則可以通過將其嵌入到asp.net頁面中並在必要時調用它來執行Java事件。

+0

LIX需要一個C#解決方案而不是Java applet。 – 2009-10-21 11:34:30

0

如果您想要簡單可靠的解決方案,請使用Cookie mechanism

首先,你必須嘗試讀取cookie:http://msdn.microsoft.com/en-us/library/aa287533%28VS.71%29.aspx

HttpCookie myCookie = new HttpCookie("MyTestCookie"); 
myCookie = Request.Cookies["MyTestCookie"]; 

if (myCookie != null) 
    //User has already voted. 
else 
    //User can vote. 

如果cookie不存在,你允許投票,投票後你只寫一個cookie的響應:http://msdn.microsoft.com/en-us/library/aa287547%28VS.71%29.aspx

HttpCookie myCookie = new HttpCookie("MyTestCookie"); 
Response.Cookies.Add(myCookie); 
相關問題