在我的网站上,我有一个民意调查。这是基于 cookie 的民意调查。如果用户投票,我会使用当前投票创建一个 cookie,因此在创建新投票之前他无法投票。我知道用户可以删除 cookie 并再次投票,但这不是这里的问题。
我有一个处理 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,所以所有的更新都会通过。
关于如何解决这个问题的任何建议?