PHP在页面加载时没有读取cookie值

时间:2015-06-12 03:23:33

标签: php

我根据网址中的GET变量设置了一个Cookie:

if (isset($_GET['this'])) {
  setcookie('this', $_GET['this'], time() + (86400 * 30), "/"); 
}

echo $_COOKIE['this'];

所以,如果我加载页面:

mypage.php?this=that

页面没有回音。但是如果我再次刷新页面,它会读取cookie并回显它的价值。

我认为页面在设置cookie数据之前输出并且能够被读取。任何想法如何纠正这个?

2 个答案:

答案 0 :(得分:1)

我相信cookie val在下一个请求之前是不可用的...它是PHP功能。如果您需要在此请求中输出它,您可以尝试回显GET值:

<?php

//imaginary code setting coookie
$_COOKIE['this'] = $_GET['this'];


//simplified pseudo code
if(isset($_COOKIE['this'])){
    echo $_COOKIE['this'];
}
else
{
   echo $_GET['this'];
}

?>

答案 1 :(得分:0)

这正是Cookie的工作原理:

http://php.net/manual/en/features.cookies.php

  

常见陷阱:

     

在下次加载可以看到Cookie的网页之前,Cookie才会显示。测试cookie是否是   成功设置,之前检查下一个加载页面上的cookie   cookie到期。过期时间通过expire参数设置。一个   调试cookie存在的好方法是简单地调用   的print_r($ _ COOKIE);