我正在使用jQuery为用户上/下投票。当用户投票时,设置了cookie,因此用户只能投票一次(没有刷新cookie)。这种方法很好,除非用户在投票后立即投票并刷新页面:
jQuery的:
$.post('vote.php',{id:id,field:field},function(){
// change button graphics
});
PHP:
setcookie(User::$cookieStart . User::$db_fields[$field_index],
$cookie . ':' . $id, time()+60*60*24*30,'/');
// This calls a function that effects the db
User::actionArticleTable($id,$field_index,1);
当用户刷新时,cookie 不设置但 mysql-info已更改,即使db代码位于cookie代码之后。
答案 0 :(得分:0)
Cookie只是HTML页面中的标题项,因此在加载vote.php页面之前,cookie不会发生任何变化。如果用户在vote.php页面返回之前刷新主页面,则不设置cookie。 Cookie可以在下次用户访问此页面时使用,但如果您想立即阻止投票,请考虑使用javascript设置Cookie。
function setCookie(c_name,value,exdays) {
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}