0

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

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

将我重定向到谷歌没有任何错误。那有什么问题(我的 apache 配置?不知道......)。它也适用于 cookie 等。

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

问候亚历克斯

4

3 回答 3

1

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

ob_end_clean(); 

在我的 index.php 的第一行中声明。导致我的原始测试代码失败(我期望的)。这确实不好,但很有必要。如果你们中的任何人都可以提供“更好”的解决方案,我将不胜感激。

问候亚历克斯

于 2012-05-31T07:54:57.777 回答
0

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

于 2012-05-31T06:34:34.910 回答
-1

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

于 2012-05-30T07:28:45.737 回答