我有两个php脚本
test.php的
<?php
header("location: test2.php");
setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
exit;
?>
test2.php
<?php
var_dump($_COOKIE);
?>
然后我将浏览器指向test.php,重定向到test2.php。然后我得到以下结果。
在Firefox中,我得到以下内容:
array
'test' => string '8kFL4IZfjkBmV7AC' (length=16)
然而在IE6中,我得到以下内容:
array
'PHPSESSID' => string 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (length=32)
注意:我故意X出了上面的PHPSESSID!
有谁知道我哪里出错了,为什么IE6不显示我的cookie。
提前致谢
答案 0 :(得分:3)
您是否在使用localhost环境? IE http://localhost要测试吗?如果是这样,这可能会导致设置cookie出现问题。我的建议是为setcookie设置域字段,如果你正在使用localhost,请尝试:setcookie("username", "George", false, "/", false);
或者设置一个vhost,其服务器名不是localhost,并将其用于域。
使用域设置cookie将类似于:
setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/', '.domain.com');
希望这有助于你。
答案 1 :(得分:1)
我也有这个问题。我在php网站上注意到了这个。
在重定向的页面上设置cookie时,必须在调用header之后设置cookie('Location:....');
http://php.net/manual/en/function.setcookie.php
我仍然不确定
答案 2 :(得分:0)
一个浏览器可以更快地对您正在执行的标题重定向做出反应,然后另一个浏览器。
尝试转动命令:
setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
header("location: test2.php");
答案 3 :(得分:0)
答案 4 :(得分:0)
某些浏览器会阻止在用户交互发生之前设置Cookie。我知道Safari会这样做,我相信IE的工作方式是一样的。基本上,从您的网站收到的第一个回复将忽略所有cookie。我怀疑如果您尝试以下类似的东西,它将按预期工作:
test0.html
<html>
<body>
<a href="test1.php">force user interaction</a>
</body>
</html>
test1.php
<?php
header("location: test2.php");
setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/');
exit;
?>
test2.php
<?php
var_dump($_COOKIE);
?>