2011-09-20 69 views
-3

可能重複:
Headers already sent by PHPPHP 「無法修改標題信息」

我一直在使用的標題( 「位置:..」)命令everwhere在我的PHP文件。通常,我會運行幾次檢查(if/else),然後在所有信息都正確的情況下重定向用戶,如果不是,則將它們發送到其他地方。

即使在我回顯並在html標籤之間使用了標題,一切正常。我從來不知道有限制無論如何,我認爲我可以在任何地方使用它..

今天我擺弄了一下頭標籤和突然那些警告消息不斷彈出在我的日誌文件和事情停止工作。

所以我有兩個問題:

1)什麼是正確的做法,以投放正確的看法?我應該有條件地將PHP HTML代碼包含在同一個文件中嗎?

2)爲什麼它在某些情況下工作?例如我有我的logginIn()函數被稱爲AFTER HTML和輸入字段等已經顯示..但它的作品。

+5

這是[一個非常常見的問題](http://stackoverflow.com/search?q=Cannot+modify+header+information),答案每次都是一樣的。 – feeela

回答

1

1)檢查你實際輸出代碼之前所需要的一切,或使用手動輸出緩衝

<?php 
ob_start(); 
echo "hello"; 
ob_end_flush(); 
header("Location:http://stackoverflow.com"); // redirects you 

甚至更​​糟糕的解決方案,打開output_buffering(php.ini中)。

2)所以,你可能已經得到output_buffering開啓使用output buffering

+0

我會一直使用手動輸出緩衝。它使您能夠更好地控制代碼,並且當您無法始終保證ini設置時,使生活更輕鬆 – adlawson

1

嘗試。

一個簡單的例子:

<?php 
ob_start(); 

// ... some more code ... 
header("Location: www.google.com"); 

echo 'something'; 

ob_end_flush(); 
相關問題