2011-12-25 50 views
-1

可能重複:
Cannot send session cookie - headers already sent
Headers already sent by PHP頭在php中有錯誤,爲什麼?

我以前的問題是爲UTF-8,但現在!再次我的代碼生成此錯誤:

Warning: Cannot modify header information - headers already sent by (output started at F:\xampp\htdocs\1\error_list.php:34) in F:\xampp\htdocs\1\error_list.php on line 75 

爲什麼?

我的代碼是:

header("location:list.php?msg=Please enter some username and password"); 
+4

此錯誤已被討論過百萬次 – emaillenin 2011-12-25 13:46:15

+1

文件是UTF-8/Unicode嗎? – PeeHaa 2011-12-25 13:49:06

+0

謝謝你是UTF8! – Freeman 2011-12-25 14:45:28

回答

-1

有幾件事情 '錯' 與您的代碼:

  1. 不要使用shorttags。他們是不是真的錯了,但我不喜歡他們:)
  2. 我覺得你的定義應該是:define('ADMIN', $_SESSION['name']);
  3. 您的問題或者出現因爲已經有輸出到瀏覽器的一些HTML或任何東西(空間)。如果您已將文件保存爲UTF-8,則應確保它不包含BOM
-2

此當你發送的HTML代碼,甚至一個空間到瀏覽器發生。如果你在這個php代碼之前有任何html代碼,那麼這個問題。

解決方案

告訴瀏覽器緩衝除了PHP代碼的一切,你需要使用:

ob_start(); 

當瀏覽器讀取的功能,它會緩衝一切,從來沒有將其發送到瀏覽器直到你的php代碼完成了它的任務。

編輯

好吧,如果你的PHP代碼之前,有一些HTML代碼,你怎麼想呢?你有什麼可以做的嗎? 這是一個解決問題的辦法,爲什麼不?

+3

解決這些錯誤的最簡單的解決方案。 -1 – 2011-12-25 13:53:07

+0

保存你的呼吸夥計。當你這樣說的時候,這意味着你什麼都不知道。給一些建議,而不是噴塗你的話.. @ TomvanderWoerdt – ALH 2011-12-25 14:06:22

+1

我一直在寫PHP代碼十多年。我在這裏告訴你,這是一個糟糕的解決方案,它只處理症狀,導致應用程序中斷。 *正確*解決方案是重新排序代碼,以便在輸出之前發生邏輯。作爲一名99代表用戶,也許你應該不太容易攻擊其他人,而是嘗試從更有經驗的開發人員那裏學習*。 – meagar 2011-12-26 05:32:04