установить PHP cookie на клик

Поэтому я бы предпочел не использовать JS / jQuery для этого, но я не могу заставить это работать.

У меня есть ссылка <a href="?hideupdates=hide">Hide Updates</a> которой я пытаюсь установить cookie.

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

он «работает», но я должен дважды щелкнуть ссылку.


от " site.com " я могу var_dump() cookie, и он появляется NULL

Теперь я нажимаю ссылку и перехожу на " site.com?hideupdates=hide ", и файл cookie по-прежнему появляется NULL

Тем не менее, от « site.com?hideupdates=hide », когда я снова нажимаю ссылку – ТОГДА печенье возвращается назад.

Я что-то упускаю? Или я могу использовать JS / jQuery для этого?

setcookie не влияет на текущий запрос. Для этого вам также необходимо вручную установить соответствующую переменную $_COOKIE :

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

Единственный способ сделать это – JS или jQuery, потому что, как говорят другие люди, cookie не влияет на текущий запрос страницы.

Для jQuery вам нужен плагин jquery cookie . На некоторых серверах есть проблемы с jquery.cookie.js (решение заключается в переименовании файла Eg: 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:

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

Прочтите все доступные файлы cookie:

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

Удалить файл cookie:

  // 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 } }); 

Куки-файлы не срабатывают до тех пор, пока они не будут установлены, и будет отправлен новый запрос страницы. Это связано с тем, что файлы cookie отправляются с запросами страниц, они просто не волшебным образом отображаются на сервере.

Ваше решение – обновить страницу после установки файла cookie.