2012-12-04 23 views
2

我正在使用jQuery進行用戶投票上/下文章。當用戶投票設置cookie時,用戶只能投票一次(無需刷新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

如果我刪除cookie?我仍然可以多次投票。我建議您爲數據庫中的每個用戶保存選票。 –

回答

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; 
} 
+0

感謝您的快速響應。我正在照顧你所提到的。用戶不能再對該ID進行投票,直到該操作完成。你是否建議我有兩個jQuery函數,首先更改cookie,然後完成,然後執行db-action? – user1163278

+0

我想如果你在js中設置cookie,它會立即可用 – FrancescoMM

+0

是的,我會研究一下。謝謝您的幫助。 – user1163278