如何匿名投票?

时间:2014-02-22 12:17:42

标签: c# asp.net

我正在寻找一个想法来开发一个小投票系统,选民可以匿名投票。没有注册,没有电子邮件......,当然,每个人都必须只投票一次。

我不想使用cookie,因为我认为有些用户可能会从一台计算机上投票,或者一位用户在一台计算机上使用多个浏览器投票。另外我认为使用IP地址也不是一个好主意,因为用户可能会使用代理。所以,你对此有什么想法吗?

(我使用带有C#和SQL Server 2008的ASP.NET 4)

感谢。

2 个答案:

答案 0 :(得分:4)

绝对没有办法保证每个人只会投票一次,而无需注册。即使您获得了IP,您也无法阻止此人第二次从另一个位置投票,并且您将阻止多人使用相同的连接进行投票。

答案 1 :(得分: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;
}