我通过链接发送变量:
<a href="foo.php?var=101"> php </a>
<a href="foo.php?var=102"> html </a>
<a href="foo.php?var=102"> css </a>
和foo.php
:
<!-- this part is under data-role="page" !-->
if(isset($_GET['var'])){
switch($_GET['var']){
case "101":
setcookie("bar", "1");
break;
case "102":
setcookie("bar", "2");
break;
case "103":
setcookie("bar", "3");
break;
default:
setcookie("bar", "");
}
}
<!-- this part is under contents !-->
echo $_COOKIE['bar'];
现在的问题是:让我说我index.php
并点击链接php
,foo.php
上什么都没有,如果我回去点击html
我得到php
这是不寻常的,如果我回去并点击css
之后,我会html
我所有的JS文件都在index.php
的头下,为什么我得到旧值?
答案 0 :(得分:2)
问题来自于setcookie()没有立即设置cookie,它发送标题以便浏览器设置cookie。这意味着,对于当前页面加载,setcookie()将不会生成任何$ _COOKIE。
当浏览器稍后请求页面时,它会在标题中发送cookie,以便PHP可以以$ _COOKIE的形式检索它们。