php header redirect在重定向之前不回显文本

时间:2013-07-25 08:10:06

标签: php header

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

<?php
ob_start();

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


ob_end_flush();
?> 

4 个答案:

答案 0 :(得分:3)

试试这个

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

答案 1 :(得分:2)

改为使用

<?php
ob_start();

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

ob_end_flush();
?>

答案 2 :(得分:1)

这不起作用,在该上下文(IMO)中使用ob_start()的原因是,如果您在阻止header()工作的标头之前有不可避免的输出。

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

答案 3 :(得分:1)

在使用标题()

之前,你无法输出任何内容

HTTP-Headers应该在服务器的任何输出之前发送。 如果您之前有输出,服务器将输出“已发送标题”

之类的警​​告