如何在asp.net中找到客户端信息

时间:2009-10-21 05:07:31

标签: c# asp.net

我有一个网页,人们来那里投票。 但我希望每个人只发一票! 请帮我用c#代码。

5 个答案:

答案 0 :(得分:2)

您可以采取几种不同的方法。

一种方法是记录每个人的IP地址。这个问题是很多人都在路由器后面。如果您阻止用户通过IP地址进行投票,那么您可能会阻止尚未投票的人。

第二方法是要求用户登录。这是防止用户多次投票的最可靠方法。它也是最受关注的。您可以使用ASP.NET成员资格提供程序减少大量工作。

第三种方法是在用户的计算机上设置Cookie。他们可以轻松删除cookie,但大多数用户不知道他们在那里并且并不真正关心。

答案 1 :(得分:2)

这是一个棘手的问题,我很确定你必须以某种方式进行权衡。

  1. 检查IP how to find client info in asp.net和HTTP_FORWARDED,问题是任何IP都很容易被欺骗,两个人可以使用同一台计算机和/或拥有动态IP:s

  2. 发送确认电子邮件

  3. 用户必须在您的系统中注册

  4. 需要OpenId

  5. 我会去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);