2012-03-06 28 views
0

基本上,我正在寫一個wordpress插件。我的插件所做的第一個功能是確定要發送的HTTP響應代碼和標頭(在發送之前)。如何知道在發送HTTP響應代碼和頭文件之前發送了什麼

基於http狀態碼,它會放置一個掛鉤並可能根據其他事情修改HTTP響應。

這是我寫的第一個插件,你可以猜出我在這方面的經驗 - 我仍然使用插件編寫的基礎知識。

回答

2

headers_list()http_response_code()

請注意,http_response_code()是新的,可能無法在您的PHP版本中使用。沒有其他方法可以檢測到它。抱歉。但是如果你自己沒有改變它,狀態碼總是應該是「200 OK」。

/* get headers and HTTP status code (which should be always 200, 
    if you didn't change it before calling this code) */ 

if (!headers_sent()) { 
    $headers = headers_list(); 
    $status = http_response_code(); 
    // change if necessary 
} 
else { 
    // oh noes, cannot change headers anymore 
} 
2

headers_list函數將爲您提供已發送或即將發送的所有標頭的列表。您可以確定它們是否已使用headers_sent函數發送過,但我認爲您不能保證在發送之前攔截它們。然而,我可能會錯誤地認爲這可能是錯誤的 - 輸出緩衝可能是可能的,但我從未考慮過這一點。

+0

嗨,詹姆斯!感謝回覆。我剛剛檢查了headers_list()。它返回以下內容:Array ( [0] => X-Powered-By:PHP/5.3.5 [1] => X-Pingback:http://mysite.com/xmlrpc.php [2] => Content-Type:text/html; charset = UTF-8 ) 沒有HTTP狀態碼。我需要HTTP狀態碼... – 2012-03-06 08:50:45

2

你必須結合使用headers_sent()和headers_list(),檢查是否標頭不與第一個發送,重複對第二個提供的結果,改變他們根據你的邏輯

+0

感謝您的回覆......您是對的,但headers_list()不提供HTTP狀態碼。 – 2012-03-06 09:07:31

+0

@ahmedtabrez HTTP狀態碼*不是*真正的標題 – Kaii 2012-03-06 09:22:30

+0

那麼如何獲取HTTP狀態碼......(發送之前).... – 2012-03-06 09:23:29

相關問題