2014-02-22 22 views
0

我正在尋找一個想法來開發一個小投票系統,選民可以匿名投票。沒有登記,沒有電子郵件......當然,每個人都必須只投一次。如何匿名輪詢?

我不想使用cookies,因爲我認爲可能有少數用戶從一臺機器投票,或者一個用戶在一臺機器上投票多個瀏覽器。另外我認爲使用IP地址也不是一個好主意,因爲用戶可能使用代理。那麼,你有什麼想法嗎?

(我使用ASP.NET 4與C#&的SQL Server 2008)

感謝。

+0

在網上搜索「唯一標識網站訪問者」。 – CodeCaster

+0

IP或cookie。既不保證任何東西,但這是你唯一的選擇沒有註冊。大多數匿名民意調查過去都是基於「持久性」cookies。或使用壽命長達5 - 20年的餅乾。 – quetzalcoatl

回答

4

是絕對沒有辦法保證每個人只能投票一次,無需註冊。即使您獲得知識產權,您也無法阻止該人員第二次從另一個地點投票,並且會阻止多人使用相同的連接進行投票。

0

沒有註冊,你最好的選擇是使用IP地址來識別投票。將民意調查存儲在數據庫中,如果選民嘗試投票多次,則拒絕更新。

一種方式來獲得IP地址:

public static string getIPAddress(HttpRequestBase request) 
{ 
    string szRemoteAddr = request.UserHostAddress; 
    string szXForwardedFor = request.ServerVariables["X_FORWARDED_FOR"]; 
    string szIP = ""; 

    if (szXForwardedFor == null) 
    { 
     szIP = szRemoteAddr; 
    } 
    else 
    { 
     szIP = szXForwardedFor; 
     if (szIP.IndexOf(",") > 0) 
     { 
      string [] arIPs = szIP.Split(','); 

      foreach (string item in arIPs) 
      { 
       if (!isPrivateIP(item)) 
       { 
        return item; 
       } 
      } 
     } 
    } 
    return szIP; 
}