在我的网站上,我有一个民意调查。这是基于cookie的民意调查。如果用户投票,我使用当前投票创建一个cookie,因此只有在创建新投票时才能进行投票。我知道用户可以删除cookie并重新投票,但这不是问题。基于Cookie的民意调查使用PHP和AJAX
我有一个处理ajax帖子的ajax.php页面。这里是代码:
if(isset($_COOKIE['poll_id']) && $_COOKIE['poll_id'] == $poll_id)
{
// print message that it is already voted, show the results...
}
else
{
// update the database and create a cookie
}
如果投票是在按钮单击进行的,此代码工作正常。但是,我开始在Firebug这是这样做的一个JavaScript:
for(var i=0;i<100;i++) {
jQuery.post('ajax.php', {
//post parameters
});
}
而且我得到100票。如果我再次运行脚本,它会失败,因为创建了一个cookie,但似乎如果我发出100个同时请求,检查失败,因为我猜系统没有时间来及时创建cookie,所有更新都会经过。
关于如何解决这个问题的任何建议?
我能想到的是节流的唯一的事情。你在某种方式下只能在相同的几秒钟内允许每个ip的N张选票。每5秒钟一次投票。如果您还没有分开记录每个投票,并且存储IP,那么您将不得不单独记录每个投票。 –