2011-05-11 56 views
0

我想從登錄頁面重定向到我的主頁使用PHP。 我用下面的代碼行:header('location:index.php'); inspite重定向我收到錯誤,如:頁面重定向問題在php

Warning: Cannot modify header information - 
headers already sent by (output started at C:\wamp\www\student\login.php:18) 
in C:\wamp\www\student\login.php on line 19 
+1

你甚至用google搜索錯誤嗎?這就像你可以做的最常見的PHP錯誤之一。 – 2011-05-11 10:38:58

+1

我可以看到你的代碼嗎? – Saleh 2011-05-11 10:40:59

回答

1

如果您在header()函數之前打印某些內容,則會發生此錯誤。

例如:

<?php 
echo 'test'; 
header('location:index.php'); 
exit; 
?> 

甚至:

<html> 
    <head> ..... 
<?php 
echo 'test'; 
header('location:index.php'); 
exit; 
?> 

你,讓你的輸出任何操作之前移動這段PHP代碼。

你也可以做下面的技巧,但它是第二種方式,你應該嘗試:

<?php 
echo 'test'; 
ob_start(); 
flush(); 
header('location:index.php'); 
exit; 
?> 
+0

ob_start(); 問題可以解決,只需在開始時寫上面一行 – user741189 2011-06-27 06:31:36

0

你需要在PHP代碼第一行中插入

ob_start(); 

打開輸出緩衝區

+0

實際上你可以隨時做這件事,但在嚴格改變標題信息之前(header()函數) – heximal 2011-05-11 10:35:26

+0

只有當你有這樣做的理由時,才推薦使用這種方法。也許它可以避免,對初學者來說更簡單。 – 2011-05-11 10:42:15

+0

我指的是「你**需要**」btw – 2011-05-11 10:42:46

0

如果你已經「回顯」或「print'd」任何東西到頁面上,無論是內您的腳本或任何PHP標記集之外,則無法再發送任何標題。這就是你的錯誤信息所說的。

此外,您應該(嘗試)在位置標記中使用完整路徑,對於您的網站上的每個鏈接使用完整網址,更不用說重定向。

0

確保在輸出任何響應之前調用標題功能,例如,必須在任何echo函數或print_r之前調用header()函數,請嘗試刪除<?php開始標記之前的空格。

0

很難確定輸出到頁面的內容。我試圖消除我的問題,通過刪除所有「回聲」,「打印」等,但無法使重定向工作。我認爲返回的SQL查詢有問題。添加緩衝區並沖洗它可以解決問題。

0

您需要通過逐行檢查header_sent()來確定頭是否已發送,否則將返回true或false。如果它已經發送了,你不能使用header()。嘗試meta http-equiv =「refresh」content =「0; URL ='你的網址'」/。別忘了添加打開和關閉標籤。 <>