Cookie未设置但数据库已更改

时间:2012-12-04 11:53:12

标签: php jquery database cookies

我正在使用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代码之后。

1 个答案:

答案 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;
}