2012-09-23 50 views
0

我原來是用PHP頭重定向用戶。不過,在我的服務器上,我遇到了問題,因爲HTML在位置標題之前出現。現在,改變我的腳本結構並不是我能做的事情。我可以使用什麼其他方式重定向到我的PHP。用PHP重定向用戶

我嘗試了這些選項,但他們沒有工作:

echo "<META HTTP-EQUIV="Refresh" Content="1; URL=index.php">"; 

而且單引號:

echo <META HTTP-EQUIV="Refresh" Content="1; URL=index.php">; 

既不方式合作。我能做什麼?

+1

在您的PHP頁面 –

回答

3

您可以enable output buffering。輸出將被緩衝直到完成,允許您隨時設置標題。

確實如此,您應該修復您的應用程序,以免設置您描述的方式。我知道你說這不是你可以做的事情,但是如果你將你的應用程序邏輯與你的HTML混合在一起,那麼你可能會遇到其他問題。你的代碼的可讀性和可重用性是其中之一。

+0

+1開始處使用ob_start()來編碼組織。 – Saurabh

1

看看Output Buffering ..您在第一次輸出之前基本上調用ob_start()函數,在上次輸出之後再調用ob_flush()

+0

對於他所需要的,沒有必要這樣做。您可以在php.ini中配置常規緩衝。 – Brad

+0

..它爲整個服務器配置設置緩衝,即使你只需要一個頁面/虛擬主機等等。對於其他使用緩存服務器範圍的使用案例會破壞功能。在共享/付費託管中,您也無法輕鬆更改php.ini。 –

+0

基於被問到的問題,我的猜測是他的整個應用程序結構有點兒笨拙,他會在別處需要它。另外,我還沒有看到共享託管服務提供商,您無法像這樣爲您的帳戶設置PHP.ini指令。 – Brad

0

如果你想顯示一些html內容,並在一段時間後重定向到其他頁面。你可以使用下面的meta標籤。

<meta http-equiv="refresh" content="5;url=http://www.example.com/otherpage"> 
+0

性能問題? – Saurabh

+0

@Saurabh你是什麼意思?這與績效有何關係? – xdazz

+0

我的意思是,如果我們只想重定向,那麼爲什麼要加載整個頁面。之後,它會解析,然後重定向發送另一個請求。這是一種生澀的體驗。重定向應該發生在服務器端。 – Saurabh

1

而且有一個主要故障在你的PHP 試試這個

echo '<META HTTP-EQUIV="Refresh" Content="1; URL=index.php">'; 

因爲你已經在使用元標籤內的雙引號,則必須使用單者開始和結束回聲字符串。你去那裏,Meta標籤現在可以正常工作。

使用頭

header('Location:http://www.mtrix.in'); 

exit(); 

的人將被重定向到提供該位置。 但是這必須在任何輸出之前發送,或者甚至發送標題,因爲標題只能發送一次,並且通常在輸出之前發送。

您也可以輸出以下

<script> 

window.location='index.php'; 

</script> 

的元標記應工作

<元HTTP的當量= 「刷新」 內容=「2; URL = HTTP://mtrix.in/ 「>

0

對不起,我沒有意識到你在回聲代碼中犯的錯誤,所以我編輯了答案,檢查了它,現在它應該工作。