【发布时间】:2013-12-11 01:21:18
【问题描述】:
我们的网站 (PHP/Linux/Apache) 出现错误,其中 $_COOKIE 全局变量在某些页面上丢失了所有值。这通常是在跟随带有 GET 参数的链接或提交 POST 表单之后。我真的很困惑为什么会突然出现这种情况。为了说明,当我浏览网站时,我已经在每个页面上转储了 $_COOKIE 变量的值(一些值被 xxx 替换)。
主页(一切正常):
Array
(
[nav-hosting] => 1
[nav-server_management] => 1
[locale] => en-US
[psaContext] => tools
[mycart] => xxx
[myid] => xxx
[__utma] => xxx
[__utmb] => xxx
[__utmc] => xxx
[__utmz] => xxx
)
提交站点搜索表单后的结果页面(一切正常):
Array
(
[nav-hosting] => 1
[nav-server_management] => 1
[locale] => en-US
[psaContext] => tools
[mycart] => xxx
[myid] => xxx
[__utma] => xxx
[__utmb] => xxx
[__utmc] => xxx
[__utmz] => xxx
)
从搜索结果中点击进入某个页面(出现问题):
Array
(
[1] =>
)
因此,$_COOKIE 莫名其妙地具有索引 1 和空值。任何人都可以提出可能导致这种情况的原因吗?
从有问题的最后一页进一步单击将再次恢复所有原始值。莫名其妙!
【问题讨论】:
-
请发布一些代码,例如您如何在每个页面上获取 cookie。仅靠结果来帮助几乎是不可能的 =)
-
使用浏览器的开发工具(所有主流浏览器都有)确保
Cookie和相关的标头在每个请求中都被发送/接收。对于未发送 cookie 数据的请求,请查看是否从服务器接收到 不同SetCookie标头(或根本没有)。 -
访问cookie:
if (isset($_COOKIE['myid'])) { // do something with $_COOKIE['myid'] }设置cookie:setcookie('myid', $_COOKIE['myid'], time()+60*60*24, "/", ".".str_replace("www.","",$_SERVER['HTTP_HOST'])); // 24 hours -
我也会看看浏览器的开发工具