Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 网站。VoteUp或VoteDown视频。如何限制用户多次投票?_Php_Javascript_Mysql_Ajax - Fatal编程技术网

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

Php 网站。VoteUp或VoteDown视频。如何限制用户多次投票?,php,javascript,mysql,ajax,Php,Javascript,Mysql,Ajax,我在一个网站上工作(html、css、javascript、ajax、php、mysql),我想限制特定用户对特定视频的投票次数 它类似于YouTube系统,在那里你可以voteUp或voteDown一个特定的视频 每次投票都需要在video.voces表中添加一行,该表记录时间、投票方向(向上或向下)、客户端ip地址(使用PHP:$ip=$\u SERVER['REMOTE\u ADDR'];),当然还有相关视频的ID 增加选票就这么简单;(伪代码):Javascript:onClick(投票

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

它类似于YouTube系统,在那里你可以voteUp或voteDown一个特定的视频

每次投票都需要在video.voces表中添加一行,该表记录时间、投票方向(向上或向下)、客户端ip地址(使用PHP:$ip=$\u SERVER['REMOTE\u ADDR'];),当然还有相关视频的ID

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

问题是:

如果你在投票后重新加载/刷新页面,你可以一次又一次地投票,你就明白了

我的问题:

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

我的想法:

您是否使用cookie,并添加一个带有视频id的新cookie。并在插入新投票前检查cookie

在插入投票之前,您是否使用IPaddress和videoID查看同一用户(IP)是否在过去24小时(mktime)内为同一视频(vidID)投票,以及是否基于此查询允许或取消允许voteInsertion

你不在乎吗?假设大多数用户都是理智的,他们有比刷新页面和反复投票更好的事情要做


欢迎提出任何建议或想法

如果你真的不在乎,特别是4chan效应,你可以用一块饼干。不要使用IP地址,因为在普通NAT路由器后面到处都是人


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

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


<>如果站点使用登录,也许你可以考虑只允许登录用户投票的选项。在这种情况下,很容易知道用户是否已经投票,但限制性很强。

也许最好的建议是让注册用户投票。这样你就可以查询
,其中user\u id='x'和video\u id='y'
,如果找到记录,就不要让他投票

唉,对于匿名用户来说,这可能很棘手。许多IP地址在网络上共享,因此同一大楼中的用户可能只需投票一次。
cookies选项可能很好,但它们可以被擦除。你就是不能相信用户方面的任何东西

您是否使用cookie,并添加一个带有视频id的新cookie。并在插入新投票前检查cookie

Cookie可以很容易地禁用或很快地清除。将投票保存到cookie是不可靠的,投票可以毫无问题地进行游戏

在插入投票之前,您是否使用IPaddress和videoID查看同一用户(IP)是否在过去24小时(mktime)内为同一视频(vidID)投票,以及是否基于此查询允许或取消允许voteInsertion

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

你不在乎吗?假设大多数用户都是理智的,他们有比刷新页面和反复投票更好的事情要做

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


如果投票很重要,最好只允许注册用户投票。当然,人们可以而且会让多个帐户投票(例如,请参阅),但你让他们更难投票。如果投票不是很重要,我会选择cookie选项。

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

  • 只允许经过身份验证的用户投票
  • 将投票存储在数据库中以进行检查
  • 还将投票存储在cookie中,以进行初始检查并减少数据库的负载

  • 如果你真的不在乎,就用饼干吧。

    是的,我尽量避免多人投票,因为videoX的拥有者可以大大提高它的知名度。我可能需要注册和登录才能投票或在视频上留言。非常感谢各位……你们打算怎么做才能防止同一个人注册不止一次?@Pointy:即使是谷歌、YouTube、微软和eBay都有这样的问题。他们仍然使用类似的评级系统(eBay的反馈)。无论你怎么看,你都无法阻止一个真正想要不止一次投票的用户。即使以你的银行账户为例,欺诈性的银行账户也一直存在。哦,是的,我理解。就像我在自己的回答中所写的那样,除非你有了真正的工作(比如银行账户或信用卡号码),否则情况不会变得更好。显然,这不是一个选择。