2012-01-02 182 views
2

我用這個功能來重定向從一個PHP頁面到另一個:PHP頭功能不能正常工作

header('Location: student.php?cnp='.$_REQUEST['name']) ; 

在我的本地主機它的工作,但如果在網上測試它,它不會重定向。 我也試圖給出完整的路徑(如http://.../student.php?...),但它仍然不起作用。有誰知道爲什麼,我該怎麼辦?

+0

您是否收到任何錯誤消息?也許_「不能修改標題信息 - 標題已經發送...」_ ??? – rdlowrey 2012-01-02 17:49:27

+0

不......它只是保持在同一頁上! – Madrugada 2012-01-02 17:52:36

+0

錯誤報告?你確定該行被執行? – JJJ 2012-01-02 17:54:36

回答

5

試試這個:

header('Location: http://www.example.com/someurl.php', true); 

第二個參數將取代以前的位置標頭(如果有的話)。

還要檢查你所收到的HTTP響應代碼(應該是30X)

如果沒有什麼幫助,你可以隨時通過JavaScript重定向:

echo "<script>window.top.location='http://www.example.com/someurl.php'</script>" 

這不是那麼專業,但有效,即使頭有已經發送。

+0

順便說一句,第二個參數已經默認爲'true'。 – ComFreek 2012-01-02 18:03:26

+0

謝謝大家,它工作。 很奇怪,但這裏看後[1]我看到了不應該有前 <?PHP 後 ?> [1] http://forum.mamboserver.com/showthread.php任何空白ΔT= 49427 – Madrugada 2012-01-02 18:24:40

1

嘗試之後加入session_write_close();exit()

session_write_close(); 

header('Location: student.php?cnp='.$_REQUEST['name']) ; 

exit(); 

剛看到錯誤消息中的註釋。如果有,請將ob_start();添加到您網頁的頂部,並在session_start()之下。

+0

我沒有任何會議......我仍然應該加上你說的嗎? – Madrugada 2012-01-02 18:13:37

+1

是的,你應該仍然添加它。把它放在主文件的頂部。 – Tim 2012-01-02 19:16:25

0

我嘗試這個解決方案,它沒有工作

header('Location: http://www.example.com/someurl.php', true); 

所以我建議人們去與這兩種可能如下解決方案,爲我工作。

使用JS

echo "<script>window.top.location='http://www.example.com/someurl.php'</script>" 

使用META

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=http://www.example.com/someurl.php">'; 

這兩個都爲我工作。但由於某種原因標題的東西不工作在網絡上,但工作在本地非常好。我將使用元解決方案。

0

您的header()不工作,因爲頭已經發送到瀏覽器。 在頁面的開頭使用ob_start()(甚至在DOCTYPE聲明之前)。而在年底,使用ob_end_flush()

0

嘗試這個www.psychocodes.in

<?php 
ob_start(); 

//more code 
header("Location:URL"); 

ob_end_flush(); 
?> 
0

我只是有這個建議爲我工作了同樣的問題。將這個功能在你的代碼的頂部:

function move_to(){ 
header('Location: student.php?cnp='.$_REQUEST['name']); 
} 

,隨時隨地調用函數:順便說一下

move_to() 

,我不爲它會邀功。我剛剛發現它在:Header function not working PHP