2012-10-10 105 views
0

可能重複:
Headers already sent by PHP廣東話設置HTTP標頭PHP

我想寫的,我將某個應用一個JSON API。它在PHP中。在PHP腳本的開頭,我試着檢查是否所有的GET參數都存在,如果不存在,那麼服務器應該發送一個400 - 錯誤請求標頭。

的代碼如下所示:

//CHECK CONDITIONS 
if (isset($GET["clat"]) && isset($GET["clng"]) && isset($GET["limit"])) 
{ 
//do stuff 
} else { 
header("HTTP/1.0 400 Bad Request"); 
exit; 
} 

服務器只是提供一個空白頁與200 - 行頭。所以我在另一臺網絡服務器上測試了它,它似乎工作正常。

顯然,服務器有問題。我該如何解決這個問題?

編輯 我似乎已經找到導致標題總是200 OK的行。在PHP的開頭,我包含了一些帶有一些mySQL連接參數的php文件。當我註釋掉include 'setup.php';這條線時它就起作用了。該setup.php包含以下內容:

// Connects to Our Database 
mysql_connect("#####", "#####", "######") or die(mysql_error()); 
mysql_select_db("####") or die(mysql_error()); 

如何保持外部數據庫信息包括,同時能夠發送不同的HTTP標頭後?

在此先感謝。

+0

你可以使用任何類型的'頭文件? – Peon

回答

1

檢查,如果你包含的文件沒有UTF在BOM的beggining文件和關閉後的任何文本?>,因爲如果有的話,PHP會自動發送頭文件

+1

所包含的文件只包含我上面粘貼由 handyface

+0

嘗試包圍刪除文件結尾的?>標籤,因爲他們是沒有必要的,如果你的文件只是PHP代碼,並檢查主文件,以及對BOM代碼 – ninaj

+0

您的回答讓我接觸到解決方案。 ''>'後面有一個空格。非常感謝! – handyface

1
header("HTTP/1.0 400 Bad Request", true, 400); 
+0

感謝您的幫助。請檢查編輯的問題。 – handyface

1

用戶報頭方法

header(string,replace,http_response_code) 

串 - 必要。指定頭字符串發送

更換 - 可選。指示標題是否應替換之前的內容或添加第二個標題。默認值爲TRUE(將取代)。 FALSE(允許相同類型的多個報頭)

http_response_code-可選。強制HTTP響應代碼到指定的值(在PHP 4.3提供更高)

+0

感謝您的幫助。請檢查編輯的問題。 – handyface

0

試試這個方法:

<?php 
header("Status: 400 Bad Request"); 
?> 
+0

感謝您的幫助。請檢查編輯的問題。 – handyface