2011-11-16 29 views
2

博特這些行:不能重定向到另一頁在PHP腳本結束

echo '<br/><br/>'.$_SERVER["SCRIPT_NAME"]."?page=".$pager->GetVariableC."&threadID=".$threadID; 
header("Location:".$_SERVER["SCRIPT_NAME"]."?page=".$pager->GetVariableC."&threadID=".$threadID); 

給我這個:

/PoliticalForum/Thread/thread.php?page= 2 & threadID = 6 警告:無法修改頭文件信息 - 已在C:\ xampp \ htdocs \ PoliticalForum \ Thread \中發送的頭文件(輸出在C:\ xampp \ htdocs \ PoliticalForum \ Thread \ comments.php:42中發送) 348線上的thread.php

如何在腳本末尾重定向?

+0

你檢查什麼是對線42在C:\ XAMPP \ htdocs中\ PoliticalForum \主題\的comments.php? – SERPRO

+0

評論echo語句,不允許在發送標題之前打印任何內容。 – ioseb

+0

是的,我可以,但是我在腳本的末尾執行此操作。在重定向發生之前需要完成幾個sql語句 –

回答

1

使用PHP的header()將輸出發送到客戶端瀏覽器後,您無法重定向。

你可以做的是使用meta標籤:

<meta http-equiv="refresh" content="2;url=http://www.destination.com/"> 

2是以秒爲單位重定向前的時間,url是目標。你可以找到更多關於它的信息here(你應該閱讀drawbacks部分)。

+0

好方法..但它不是我想要的..因爲你可以看到我需要攻擊變量到url並且頭文件需要在腳本的末尾執行 –

+0

@DmitryMakovetskiyd你仍然可以用PHP'echo'目的地'url'。另一種可能的解決方案是不出來在調用'header()'函數之前放**任何**,因爲'echo'由於重定向而不會被用戶讀取的任何東西都沒有多大意義。 – Nasreddine

+0

這是真的..但腳本確實涉及回聲..我看到你的觀點..我有條件地使用標題..用戶在其他時間讀取評論的東西我想重定向發生 –

3

發生此錯誤時,您已經通過使用echo或在關閉php標記後添加了一些新行來向瀏覽器發送了某些內容。確保在重定向之前不要有任何新行或回顯內容。

+0

我需要做什麼呢? –

+0

在一個PHP腳本中,你在最後做了一些動作並重定向,在輸出某些東西(回顯)時沒有意義。因此,您必須確保在重定向之前不要回顯某些內容。檢查腳本的邏輯,如果你錯過了什麼。 –

+0

我不會使用重定向..太糟糕了沒有辦法,在asp.net中有Server.Redirect或Response.Redirect ... :( –

0

在向瀏覽器發送任何數據後,您不能重定向,在這種情況下,第一行是這樣做的。你爲什麼要打印你永遠不會看到的東西(瀏覽器會立即重定向)?

如果可能的話,刪除重定向上方的輸出行,或者如果不能修改周圍的代碼,則使用輸出緩衝區查看。

+0

我想在執行insert語句之後,我想用戶被重定向到另一頁 –

+0

然後爲什麼不只是插入然後重定向?假如你不輸出任何東西,那麼這將很好地工作 –

0

如果你想要輸出和重定向,那麼你需要使用JavaScript重定向。 http://www.tizag.com/javascriptT/javascriptredirect.php 您在此處所做的操作稱爲HTTP重定向(HTTP 302),它是作爲響應發送到瀏覽器的HTTP標頭之一。 此錯誤消息是由於您echo'd內容具有發送所有緩衝的HTTP標頭然後嘗試設置標頭(但它已被髮送)的效果。爲了更好地瞭解這一點,我建議所有的Web開發人員安裝Firebug並監控「網絡」選項卡,您將更好地掌握標題及其含義。

乾杯

+0

我明白你的意思,但我不想使用javascript..too壞我不能使用此功能 –