投票应用程序,避免同一个人多次投票

时间:2016-04-16 16:54:46

标签: python django web

我正在使用Django开发一个Web应用程序,它涉及一些不同的民意调查。我显示一个问题后跟一些链接,用户点击他/她喜欢的链接。例如:

<p>Which one do you prefer?</p>
<a href="http://domain.com/polls/15/vote/1" >Option 1</a>
<a href="http://domain.com/polls/15/vote/2" >Option 2</a>
<a href="http://domain.com/polls/15/vote/3" >Option 3</a>
<a href="http://domain.com/polls/15/vote/4" >Option 4</a>

每个链接都使用两个数字15代表投票数15,并通过投票选择所选的选项,例如1

问题在于,可能有些用户会开始刷新网页,例如疯子选择他们的选项,在他们的浏览器中输入链接http://domain.com/polls/15/vote/1以多次投票。

有没有办法避免这个问题?我应该在x时间内将选民的IP存储到数据库中,以避免他们在x时间内多次投票吗?这对许多用户来说不是一个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

取决于你想要走多远:

  • 使用POST方法通过ajax提交投票,因此没有可以直接从浏览器访问的网址
  • 为投票的人添加Cookie
  • 添加验证码
  • 商店IP(here是关于如何有效存储它们的一些建议,如果性能至关重要,也可以使用像Redis这样的东西,但除非你建立一个全国性的投票系统,否则你可能会很好表)
  • 要求注册投票(使用电子邮件确认注册,使用Facebook帐户注册,使用短信确认注册等)

此外,每当你发现用户已经投票时,可能是一个聪明的举动,只是默默地忽略他们的进一步投票并假装他们被接受,这样他们就不会尝试几乎难以作弊。