PHP轮询脚本(使用AJAX)需要一个cookie

时间:2011-05-08 19:17:23

标签: php ajax cookies

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

4 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

如果您决定保存ip和cookie,请确保检查两者是否存在,因为用户可以轻松删除cookie,但更改IP并不是一件容易的事情。地址。

我希望有帮助:)