2013-07-25 39 views
2

为什么我的代码在重定向之前没有显示/打印“重定向现在....”文本。请记住,我不想使用javascript或http_redirect()重定向后来会打破我的逻辑流程。php标题重定向没有在重定向之前回显文本

<?php 
ob_start(); 

echo "redirecting now ...."; 
sleep(3);  
    header("Location:index.html"); 
    exit(); 


ob_end_flush(); 
?> 

回答

2

使用这个代替

<?php 
ob_start(); 

echo "redirecting now ...."; 
header("Refresh: 3; index.php"); 
exit(); 

ob_end_flush(); 
?> 
+0

它现在正在工作我认为有一个错误在我的代码 –

+0

它是当我测试它:) – mavili

3

试试这个

<?php 
    echo "redirecting now ...."; 
    print "<META http-equiv='refresh' content='3;URL=index.html'>"; 
    exit; 
?> 
+0

PHP的“header()”会发送一个HTTP标头 - 这些标签在主响应后不会被浏览器读取或处理。 http://www.techrepublic.com/blog/software-engineer/structure-of-an-http-response/ – watermanio

+0

所以简而言之,使用php头部函数,你不能打印任何东西之前重定向 –

+0

我认为这是最好的重定向页面的方式,你可以打印任何东西之前重定向也可以设置秒等待... –

1

这是行不通的,在这方面(IMO)使用ob_start()的原因是,如果你有问题,导致该头的头之前不可避免的输出()从工作。

它不起作用的原因是因为ob_start()捕获所有的输出(在这种情况下,回声“重定向现在....”;),并不吐出,直到ob_end_flush()。在脚本到达ob_end_flush()之前,您使用header()重定向页面。

1

您使用header()

前斜面输出任何HTTP报头应该从服务器的任何输出之前发送。 如果您之前有输出,服务器将会输出如'Headers already been sent'的警告。