PHP中的cookie不用刷新就生效的方法
发布时间:2017-04-26, 15:03:27 分类:PHP | 编辑 off 网址 | 辅助
正文 773字数 441,520阅读
为啥php setcookie()后,需要刷新两次,才能获得cookie?如果要立即生效可以先创建空的cookie,然后赋值。
setcookie('test','');
$_COOKIE['test']='123456';
Run code
Cut to clipboard
PHP的COOKIE在设定之后,必须要刷新一下网页才能生效,至于是什么原因,有人说是为了安全考虑,至于你信不信,反正我信了
不过,这种机制总是会给我们带来这或那的问题,比如前段时间,我的站点上得设置一个广告显示的功能,就需要用到COOKIE,主要目的是为了加大广告的转化率,可是如果刷新生效,就比较麻烦,所以就用了这种方法,好用。
function cookie($var, $value='', $time=0, $path='', $domain=''){
$_COOKIE[$var] = $value;
if(is_array($value)){
foreach($value as $k=>$v){
setcookie($var.'['.$k.']', $v, $time, $path, $domain, $s);
}
}else{
setcookie($var, $value, $time, $path, $domain, $s);
}
}
//调用方法
cookie("website","WEB开发笔记","./","www.lizhenqiu.com");
//
echo $_COOKIE["website"];//输出WEB开发笔记
Run code
Cut to clipboard
(支付宝)给作者钱财以资鼓励 (微信)→
有过 5 条评论 »
$_COOKIE[$var] = $value; setcookie($var, $value, $time, $path, $domain, $s);
也就是对cookie一次进行了两次赋值
setcookie($var, $value, $time, $path, $domain, $s); //假设COOKIE名称为$var,值为$value COOKIE[$var] = $value;
先用setcookie函数创建COOKIE;然后再对COOKIE进行赋值操作。
这样就不用再次刷新,直接就可以获得cookie的值了。
也就是对cookie进行了两次赋值
function getCookie(cookie_name) { var allcookies = document.cookie; var cookie_pos = allcookies.indexOf(cookie_name); //索引的长度 // 如果找到了索引,就代表cookie存在, // 反之,就说明不存在。 if (cookie_pos != -1) { // 把cookie_pos放在值的开始,只要给值加1即可。 cookie_pos += cookie_name.length + 1; //这里容易出问题,所以请大家参考的时候自己好好研究一下 var cookie_end = allcookies.indexOf(";", cookie_pos); if (cookie_end == -1) { cookie_end = allcookies.length; } var value = unescape(allcookies.substring(cookie_pos, cookie_end)); //这里就可以得到你想要的cookie的值了。。。 } return value; }
你获取cookie的方法有问题,用这个吧