我正在寻找一个想法来开发一个小投票系统,选民可以匿名投票。没有注册,没有电子邮件......,当然,每个人都必须只投票一次。
我不想使用cookie,因为我认为有些用户可能会从一台计算机上投票,或者一位用户在一台计算机上使用多个浏览器投票。另外我认为使用IP地址也不是一个好主意,因为用户可能会使用代理。所以,你对此有什么想法吗?
(我使用带有C#和SQL Server 2008的ASP.NET 4)
感谢。
答案 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;
}