php SetCookie适用于Firefox,但不适用于IE

时间:2010-07-21 21:13:05

标签: php internet-explorer session cookies setcookie

我有两个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。

提前致谢

5 个答案:

答案 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)

看看你的例子,你首先得到header()然后是setcookie()。 首先尝试和setcookie(),然后执行header();

答案 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);
?>