2013-04-07 80 views
-2

所以,最奇怪的事情正在發生,我真的被難住了。 我不認爲我需要發佈代碼示例,我會告訴你爲什麼。PHP header()不起作用

我跑在我的本地一個PHP header("location:blah.php")和正常工作。 當我將所有內容遷移到我的1and1託管帳戶時,標題標記根本無法使用。這顯然與來源無關。

任何想法爲什麼它不會工作,當我把它放在我的其他主機上?

+2

錯誤/通知?檢查任何?? – swapnesh 2013-04-07 10:10:28

+0

顯而易見的原因是在header()執行之前會輸出一些東西。 PHP標籤之前的空字符,字節順序標記或類似的東西? – adeneo 2013-04-07 10:10:30

+0

「這顯然與來源無關。」 - 你確定嗎?通常'header'失敗,因爲在該調用之前已經有一些輸出。你應該檢查一下。 – Gumbo 2013-04-07 10:10:53

回答

3

嘗試用一個絕對URI,而不是相對一個:

header("Location: http://yourhost.com/blah.php"); 

你可以參考http://php.net/manual/en/function.header.php 它說:

HTTP/1.1需要一個絕對URI作爲參數傳遞給»位置:包括方案,主機名和絕對路徑,但有些客戶端接受相對URI。你通常可以使用$ _ SERVER [「HTTP_HOST」],$ _ SERVER [「PHP_SELF」]和目錄名()從一個相對自己

順便說讓一個絕對URI,確保你不發送在撥打header()之前的任何輸出。甚至沒有空白的一行。

2
error_reporting(E_ALL); 
if(!headers_sent()){ 
    header("location:blah.php"); 
    exit("Headers aren't set"); 
} else{ 
    exit("Headers already sent"); 
} 

試一下.. 如果頭被送到您將獲得第二mesasge。 如果頭沒有發送,你必須重定向,如果你不是,你會得到第一條消息。

如果他們被送到你必須要找到確切位置是..通常PHP錯誤報告告訴你。

+0

這是說頭已經發送,但我不知道這可能是如何..我有我的所有其他頭在功能,不會跑到另一個頁面。 – 2013-04-07 10:29:20

+0

我更新我的答案請嘗試..這必須重新調整和錯誤報告..他們在哪裏發送 – Svetoslav 2013-04-07 10:31:07

+0

我還只是得到頭已經發送。放在header header_remove()之前的 – 2013-04-07 10:34:40