【问题标题】:PHP poll script (using AJAX) needs a cookiePHP 投票脚本(使用 AJAX)需要一个 cookie
【发布时间】:2012-04-28 04:43:11
【问题描述】:

我正在使用一个简单的 PHP 投票脚本 (http://www.w3schools.com/php/php_ajax_poll.asp) 但它没有办法阻止人们多次投票。有没有办法在脚本中添加 cookie 来限制用户投一票?

【问题讨论】:

  • 除非是为了下届总统选举,我认为你不用太担心,用 cookie 和 IP 地址就可以了

标签: php ajax cookies


【解决方案1】:

限制使用 cookie 可能不是最好的方法,因为人们可以清除它们并无限次投票。另一方面,如果您可以使用数据库,IMO 最好的方法是获取他们的 IP 并将它们放在一张桌子上,然后检查他们何时再次尝试投票。

但是,如果你仍然想这样做,你可以使用以下格式设置Cookie(http://php.net/manual/en/function.setcookie.php):

setCookie("pollCookie", "1", "999999", "/").

然后,当人们尝试投票时,您可以检查

if(isset($_COOKIE["pollCookie"]))
{
echo "You already voted;"
die;
}

再次注意,这不是一个好方法。 此外,如果他们不清除 cookie,您必须更改 cookie 过期日期。

【讨论】:

    【解决方案2】:

    我认为您的问题没有完美的答案。我认为 cookie 可以限制极少数用户只能投一票,但很容易规避。我可以在同一台计算机上使用不同的浏览器,或者从我的浏览器中清除 cookie。可能与会话变量结合使用,或者将 IP 地址存储在本地 - 但这些也不是完美的解决方案,因为您可以轻松地从单独的 IP 地址多次投票。如果您需要注册并使用会话变量登录,那么至少您可以限制每个注册用户投一票,这反过来又可以限制为每个电子邮件地址一票 - 但同样不完美,因为用户可以有多个电子邮件地址。就个人而言,当我不得不实施投票系统时,我允许人们公开投票,然后记录投票模式(有多个类别)和 IP 地址,并通过专门构建的脚本清除任何明显可疑的投票。也许上述想法的组合足以满足您的需求。

    【讨论】:

      【解决方案3】:

      您可以使用cookie来存储一个标志值来检测用户是否投票但没有投票,但是cookie可以修改和删除,所以应该使用会话! 您也可以在数据库中使用它!

      【讨论】:

        【解决方案4】:

        您可以将 cookie 和 IP 地址保存在临时数据库表中,该表可以每天刷新,或者如果您的网站上有用户帐户,则可以将用户标记为已投票。

        如果您决定保存 ip 和 cookie,请务必检查两者是否存在,因为用户可以轻松删除 cookie,但更改 ip 并非易事地址。

        希望对你有帮助:)

        【讨论】:

          猜你喜欢
          • 2013-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多