网站。 VoteUp或VoteDown视频。如何限制用户多次投票?

时间:2010-04-02 19:55:51

标签: php javascript mysql ajax

我正在网站上工作(html,css,javascript,ajax,php,mysql),我想限制特定用户为特定视频投票的次数。

它类似于YouTube系统,您可以在其中投票或投票投放特定视频。

每次投票都需要在video.votes表中添加一行,该表记录时间,投票方向(向上或向下),客户端IP地址(使用PHP:$ ip = $ _SERVER ['REMOTE_ADDR'];),以及当然是有问题视频的ID。

添加投票就像这样简单; (伪代码):Javascript:onClick(投票(a,b,c,d)),它通过ajax将变量传递给PHP插入脚本,最后我们用“谢谢投票”消息替换投票按钮。

问题:

如果您在投票后重新加载/刷新页面,您可以再次投票,一次又一次,您可以得到重点。

我的问题:

如何限制特定用户为特定视频投票的次数?

我的想法:

您是否使用Cookie,并添加一个包含视频ID的新Cookie。在插入新的投票之前检查一下cookie。

OR

在您插入投票之前,您是否使用IPaddress和videoID来查看此相同用户(IP)是否在过去24小时(mktime)内投票赞成此同一视频(vidID),并允许或不允许使用voteInsertion基于这个查询?

OR

你不在乎吗?假设大多数用户都是理智的,并且有更好的事情要做,而不是刷新页面并重复投票。

欢迎任何建议或想法。

5 个答案:

答案 0 :(得分:4)

  

您是否使用Cookie,并添加一个包含视频ID的新Cookie。在插入新投票之前检查一下cookie。?

可以轻松禁用或快速清除Cookie。保存对cookie的投票是不可靠的,投票可以没有问题。

  

在您插入投票之前,您是否使用IPaddress和videoID来查看此相同用户(IP)是否在过去24小时(mktime)内投票赞成此同一视频(vidID),并允许或不允许使用voteInsertion基于这个查询?

许多用户可能使用相同的路由器,实际上具有相同的IP。通过这样做,您可以通过阻止他们投票来激怒用户,因为来自同一办公室/家庭的另一个人在向他们发送链接之前已经对该视频进行了投票。

  你不在乎吗?假设大多数用户都是理智的,并且有更好的事情要做,而不是刷新页面并重复投票。?

这完全是主观的,取决于投票的重要性。如果投票是网站的重要组成部分,最好尽可能多地关注。例如,如果视频按最高评分排序,一些用户可以多次投票以增加其个人/喜爱视频的受欢迎程度,给人以受欢迎的印象以吸引更多观看。

如果投票很重要,最好只允许注册用户投票。当然,人们可以并且将会创建多个帐户进行投票(请参阅http://gallery.live.com以获取示例),但是对于他们来说,这会让他们变得更加困难。如果投票不是很重要,我会选择cookie选项。

答案 1 :(得分:3)

如果您不关心,特别是关于4chan效果,您可以使用cookie。不要使用IP地址,因为所有地方都有普通NAT路由器后面的人群。

如果你多关心一点,你必须对人进行身份验证,但如果没有某种外部令牌来识别真正的个体,你仍然会遇到问题。当然,这取决于您网站的性质。例如,家庭银行网站可以更自信地支持投票,因为它可以识别具有实际帐号的用户。

答案 2 :(得分:3)

我会使用cookie方法。它允许识别唯一用户(对于那些接受cookie的用户),而IP则是一种糟糕的方法,因为许多用户可以共享相同的IP地址。

如果网站使用登录,也许您可​​以考虑允许仅登录用户投票的选项。在这种情况下,很容易知道用户是否已经投票,但非常严格。

答案 3 :(得分:2)

也许最好的建议就是让注册用户投票。这样你就可以查询WHERE user_id = 'x' and video_id = 'y',如果找到记录,就不要让他投票。

唉,对于匿名用户来说,这可能很棘手。许多IP地址在网络上共享,因此与另一个建筑物在同一建筑物中的用户可能只投票一次 cookies选项可能是好的,除了它们可以被删除。你不能相信用户的任何东西。

答案 4 :(得分:1)

如果你真的试图阻止多次投票:

  1. 仅允许经过身份验证的用户投票
  2. 将投票存储在数据库中以进行检查
  3. 还在cookie中存储投票以进行初始检查并减少数据库的负载。
  4. 如果你真的不在乎,只需使用cookies。