2010-06-14 25 views
4

我在理解header("Location: http://www.google.com/");如何在HTML頁面的<body>中工作時遇到問題。
不應該出現錯誤,因爲由於HTML輸出已經發送了頭部,所以在<?php ... ?>部分開始之前已經發送了頭文件。PHP標題位置工作在HTML中間

我指的是我期望得到的警告Cannot modify header information - headers already sent by...。我正在我的本地PHP開發環境(Apache/2.2.15(Win32)PHP/5.3.2)上測試這個。

下面是一個例子:

<html> 
<head> 
</head> 
<body> 
<?php header("Location: http://www.google.com/"); ?> 
</body> 
</html> 

任何想法?謝謝。

+0

它工作嗎?它會將您發送到google.com嗎? – kamasheto 2010-06-14 13:21:16

+0

是的,因爲輸出緩衝已啓用,請參閱下面的答案。 – tshabala 2010-06-14 13:43:38

回答

2

如果您在php.ini中有輸出緩衝autoenabled,那麼您可以在輸出實際發送之前隨時發出標題。

+0

+1,這可能是什麼問題 - http://www.php.net/manual/en/outcontrol.configuration.php – 2010-06-14 12:38:36

+0

這是一件好事,我應該讓它啓用?實際上,使用HTML體內的PHP腳本進行轉發非常方便,而不必在文檔頂部(IMO)使用PHP腳本。這是建議嗎?謝謝。 – tshabala 2010-06-14 12:48:34

+0

它會阻止增量更新等事情。我自己喜歡在腳本中手動打開它,而不是希望它已在我的腳本已部署到的服務器的配置中啓用。 – 2010-06-14 12:57:46

1

如果啓用輸出緩衝(見ob_start()),直到整個頁面完成後沒有輸出發送。

-1

我最近注意到在Windows上使用WAMP包進行一些開發時。當我開始在Linux機器上運行它時,導致了很多地獄。我相信有一個配置值集導致它緩衝所有頁面。