Поэтому я бы предпочел не использовать 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.