所以我宁愿不使用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 ” - 然后Cookie返回hide
。
我错过了什么吗?或者我是否'必须'使用JS / jQuery?
答案 0 :(得分:8)
setcookie
不会影响当前请求。为此,您还需要手动设置相关的$_COOKIE
变量:
setcookie("HideUpdates",$_COOKIE['HideUpdates'] = "hide", time()+60*60*24*5, "/", $vars->networkSite);
答案 1 :(得分:3)
唯一的方法是使用JS或jQuery ,因为正如其他人所说,Cookie不会影响当前的页面请求。
jQuery解决方案需要jquery cookie plugin。 某些服务器遇到jquery.cookie.js 的问题(解决方案是重命名文件E.g。:jquery.cook.js)
使用jquery cookie插件
创建会话cookie:
$.cookie('the_cookie', 'the_value');
从那时起7天内创建过期的Cookie:
$.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
}
});
答案 2 :(得分:1)
在设置Cookie并发送新页面请求之前,Cookie不会启动。这是因为cookie是随页面请求一起发送的,它们不会神奇地出现在服务器上。
您的解决方案是在设置Cookie后进行页面刷新。