2

ユーザーが記事を上下に投票するためにjQueryを使用しています。ユーザーが投票すると Cookie が設定されるため、ユーザーは 1 回だけ記事に投票できます (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);

ユーザーが更新すると、db コードが Cookie コードの後に​​ある場合でも、Cookie は設定されませんが、mysql-info は変更されます。

4

1 に答える 1

0

CookieはHTMLページの単なるヘッダー項目であるため、vote.phpページが読み込まれるまでCookieは変更されません。投票.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 に答える