我有一个网页,人们来那里投票。 但我希望每个人只发一票! 请帮我用c#代码。
答案 0 :(得分:2)
您可以采取几种不同的方法。
一种方法是记录每个人的IP地址。这个问题是很多人都在路由器后面。如果您阻止用户通过IP地址进行投票,那么您可能会阻止尚未投票的人。
第二方法是要求用户登录。这是防止用户多次投票的最可靠方法。它也是最受关注的。您可以使用ASP.NET成员资格提供程序减少大量工作。
第三种方法是在用户的计算机上设置Cookie。他们可以轻松删除cookie,但大多数用户不知道他们在那里并且并不真正关心。
答案 1 :(得分:2)
这是一个棘手的问题,我很确定你必须以某种方式进行权衡。
检查IP how to find client info in asp.net和HTTP_FORWARDED,问题是任何IP都很容易被欺骗,两个人可以使用同一台计算机和/或拥有动态IP:s
发送确认电子邮件
用户必须在您的系统中注册
需要OpenId
我会去4号
答案 2 :(得分:1)
使用此声明获取IP。
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
当人们投票时,将IP存储在数据库中并检查他们第二次来
OR
您可以在客户端cookie中存储一些信息并第二次检查
答案 3 :(得分:0)
从远程计算机获取MAC地址,并跟踪它。
want to get mac address of remote PC
然而,这在C#中会更复杂,因为我有理由相信你不能使用.NET,因为你需要使用ManagementObjects,这可能不会起作用。
但是,如果您是从asp.net执行此操作,则可以通过将其嵌入到asp.net页面中来执行Java操作,并在必要时调用它。
答案 4 :(得分: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);