2010-11-01 97 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

相關問題