1

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

<?php
ob_start();

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


ob_end_flush();
?> 
4

4 回答 4

3

改用这个

<?php
ob_start();

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

ob_end_flush();
?>
于 2013-07-25T08:16:16.170 回答
2

尝试这个

<?php
    echo "redirecting now ....";
    print "<META http-equiv='refresh' content='3;URL=index.html'>";
    exit;
?>
于 2013-07-25T08:14:39.160 回答
1

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

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

于 2013-07-25T08:15:09.367 回答
1

在使用 header() 之前你不能输出任何东西

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

于 2013-07-25T12:46:08.203 回答