爲什麼我的代碼在重定向之前沒有顯示/打印「重定向現在....」文本。請記住,我不想使用javascript或http_redirect()重定向後來會打破我的邏輯流程。php標題重定向沒有在重定向之前回顯文本
<?php
ob_start();
echo "redirecting now ....";
sleep(3);
header("Location:index.html");
exit();
ob_end_flush();
?>
爲什麼我的代碼在重定向之前沒有顯示/打印「重定向現在....」文本。請記住,我不想使用javascript或http_redirect()重定向後來會打破我的邏輯流程。php標題重定向沒有在重定向之前回顯文本
<?php
ob_start();
echo "redirecting now ....";
sleep(3);
header("Location:index.html");
exit();
ob_end_flush();
?>
使用這個代替
<?php
ob_start();
echo "redirecting now ....";
header("Refresh: 3; index.php");
exit();
ob_end_flush();
?>
試試這個
<?php
echo "redirecting now ....";
print "<META http-equiv='refresh' content='3;URL=index.html'>";
exit;
?>
PHP的「header()」會發送一個HTTP標頭 - 這些標籤在主響應後不會被瀏覽器讀取或處理。 http://www.techrepublic.com/blog/software-engineer/structure-of-an-http-response/ – watermanio
所以簡而言之,使用php頭部函數,你不能打印任何東西之前重定向 –
我認爲這是最好的重定向頁面的方式,你可以打印任何東西之前重定向也可以設置秒等待... –
這是行不通的,在這方面(IMO)使用ob_start()的原因是,如果你有問題,導致該頭的頭之前不可避免的輸出()從工作。
它不起作用的原因是因爲ob_start()捕獲所有的輸出(在這種情況下,回聲「重定向現在....」;),並不吐出,直到ob_end_flush()。在腳本到達ob_end_flush()之前,您使用header()重定向頁面。
您使用header()
前斜面輸出任何HTTP報頭應該從服務器的任何輸出之前發送。 如果您之前有輸出,服務器將會輸出如'Headers already been sent'的警告。
它現在正在工作我認爲有一個錯誤在我的代碼 –
它是當我測試它:) – mavili