输出后的http头重定向

时间:2012-05-30 07:18:17

标签: php http internet-explorer-9 opera

在我目前的项目工作中,我发现了一点好奇心。如果我尝试在任何输出后重定向网址仍然可以正常工作。但根据php手册,它不起作用。

error_reporting(-1);
echo "test";
header("Location: http://www.google.com/");

会将我重定向到谷歌而不会出现任何错误。这有什么问题(mybe my apache config?dunno ......)。它也适用于cookies等。

我正在使用IE9(也使用Opera测试)和Apache / 2.2.21。

问亚历克斯

3 个答案:

答案 0 :(得分:1)

感谢Will&的帖子pieman它发现有一个std输出缓冲区,我无法禁用或偏置。为了解决这个“问题”我放了一个

ob_end_clean(); 
我的index.php的第一行中的

语句。我的原始测试代码失败的原因(我期望)。它确实不好但有必要。如果你们中的任何人都能提供“更好”的解决方案,我将不胜感激。

问亚历克斯

答案 1 :(得分:0)

根据Will和Ganesh的评论,您还可以尝试ob_get_status()查看在echo调用时是否打开了任何输出缓冲区。如果这样做,那么您的echo将被转储到缓冲区中,并且不会立即发送到客户端。然后仍然可以调用header()而没有错误,因为没有内容被发送。

答案 2 :(得分:-1)

由于PHP INI设置,您的数据在输出之前会被缓冲。这就是为什么它成功地重定向到下一页