2010-11-01 119 views
0

我有索引文件中像这样为什么heder('Location:index')不工作,但window.location.href ='index.php'正在工作?

<?php 
include('file1.php'); 
include('file2.php'); 
?> 
在file1.php

我有类似下面的代码。

<?php 
echo "hai"; 
?> 

我试图用​​。它的页面重定向抛出一个错误类似的输出已经started.I知道头,如果我们给回声声明它抛出一个error.In这种情况下,我想通过使用Javascript window.location.href='index.php'重定向。它给了我预期的输出,并没有错误。为什么?

+0

( '地点:的index.php');'? – 2010-11-01 04:17:27

+0

@jeff Rupert在file2.php – svk 2010-11-01 04:18:11

回答

4

PHP header命令正在向浏览器将解释为响应流的指令发送重定向到新位置。但是,就其性质而言,您只能在开始发送内容之前发送任何类型的标题。在你的例子中,你发送内容“海”,然后尝试发送标题。

现在,您的JavaScript在JavaScript引擎中执行在浏览器中。因此,window.location告诉javascript引擎使浏览器请求一个新的页面。这与http流中包含的任何信息无关(理论上,该位置可能不是http,例如ftp或mailto)。

+1

作为一个方面说明,不要在php文件中写尾>?以避免不幸的空格或换行符阻止发送头文件。 – Damien 2010-11-01 04:28:03

0

尝试在PHP文件的开头添加ob_start();。这将打开输出缓冲,收集脚本生成的所有输出,并等待直到执行结束,然后将输出“刷新”到浏览器。您可以强制使用ob_end_flush();

更多信息冲洗:你在哪里使用`头​​

+0

如果选择这个选项,但要非常小心。有一个原因,网站通常不会默认缓冲。缓冲和刷新增加了您的网站的内存需求,以适应临时存储的所有额外数据,而不是直接写入输出流。根据流量级别和输出的复杂程度,这可能会对服务器造成不必要的损失。 – 2010-11-01 15:47:17

相关问题