我有像这样的索引文件
<?php
include('file1.php');
include('file2.php');
?>
在file1.php中的我有如下代码。
<?php
echo "hai";
?>
我正在尝试使用header('Location:index.php')
重定向页面。它会抛出一个类似于输出已经开始的错误。我知道如果我们给出echo语句它会引发错误。在这种情况下我正在尝试使用Javascript window.location.href='index.php'
重定向。它给了我预期的输出,没有错误。为什么?。
答案 0 :(得分:4)
PHP header命令正在向响应流发送一条指令,浏览器将该指令解释为重定向到新位置。但是,就其性质而言,您只能在开始发送内容之前发送任何类型的标头。在您的示例中,您发送内容“hai”然后尝试发送标题。
现在你的javascript由javascript引擎在broswer中执行。因此,window.location告诉javascript引擎使浏览器请求新页面。这与http流中包含的任何信息无关(理论上,该位置可能不是http,例如ftp或mailto)。
答案 1 :(得分:0)
尝试在PHP文件的开头添加ob_start();
。这将打开输出缓冲,收集脚本生成的所有输出,并等待执行结束,然后将输出“刷新”到浏览器。您可以使用ob_end_flush();