2

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

4

1 回答 1

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;
}
于 2012-12-04T11:59:57.180 回答