4

したがって、これにはJS/jQueryを使用したくありませんが、これを機能させることができないようです。

<a href="?hideupdates=hide">Hide Updates</a>Cookie を設定しようとしているリンクがあります。

if($_GET['hideupdates'] == 'hide'){
    setcookie("HideUpdates", "hide", time()+60*60*24*5, "/", $vars->networkSite);
}

「動作」しますが、リンクを 2 回クリックする必要があります。


site.com」からvar_dump()クッキーができると出てきますNULL

リンクをクリックして「site.com?hideupdates=hide」に移動すると、Cookie がまだ表示されますNULL

ただし、「site.com?hideupdates=hide」からリンクをもう一度クリックすると、Cookie が戻ってきhideます。

何か不足していますか?それとも、これに JS/jQuery を使用する必要がありますか?

4

3 に答える 3

8

setcookie現在のリクエストには影響しません。$_COOKIEこれを行うには、関連する変数を手動で設定する必要もあります。

setcookie("HideUpdates",$_COOKIE['HideUpdates'] = "hide", time()+60*60*24*5, "/", $vars->networkSite);
于 2013-01-16T20:04:37.307 に答える
3

他の人が言うように、Cookie は現在のページ要求に影響を与えないため、それを行う唯一の方法は JS または jQueryです。

jQuery ソリューションにはjquery cookie プラグインが必要です。一部のサーバーでは jquery.cookie.js に問題があります(解決策は、ファイルの名前を変更することです。例: jquery.cook.js)

jquery cookie プラグインの使用

セッション Cookie を作成します。

 $.cookie('the_cookie', 'the_value');

有効期限が切れる Cookie を作成し、それから 7 日後:

 $.cookie('the_cookie', 'the_value', { expires: 7 });

サイト全体で有効な期限切れの Cookie を作成します。

 $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

クッキーを読む:

 $.cookie('the_cookie'); // => "the_value"
 $.cookie('not_existing'); // => undefined

利用可能なすべての Cookie を読み取ります。

 $.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" }

クッキーを削除:

 // Returns true when cookie was found, false when no cookie was found...
 $.removeCookie('the_cookie');

// Cookie が書き込まれたときと同じパス...

 $.removeCookie('the_cookie', { path: '/' });

localStorage を試すことができます。Chrome、FF、IE9 以降で動作します。IE7-10 はサポートしていません。万歳!

IE8 には localStorage に関するいくつかの問題があります。

スクリプトは $(document).ready(function() {}); 内にある必要があります。

$(document).ready(function() {
   $("#btnClick").click(function(e) {
      e.preventDefault();
      localStorage.setItem('cookieName', 'cookie_value');
  window.href.location = "your_new_page.php";   
   });


   //On the same page or other page

   if (localStorage.getItem('cookieName')){
      //do here what you want


   }else{
      //do something else

   }

});
于 2014-01-18T20:19:45.037 に答える
1

Cookie は、設定されて新しいページ要求が送信されるまで有効になりません。これは、Cookie がページ要求と共に送信されるためであり、魔法のようにサーバーに表示されるわけではありません。

解決策は、Cookie を設定した後にページを更新することです。

于 2013-01-16T20:04:16.963 に答える