为什么我的代码在重定向之前没有显示/打印“现在重定向....”文本。请记住,我不想使用 javascript 或 http_redirect() 进行重定向。后者会破坏我的逻辑流程。
<?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;
?>
那是行不通的,在该上下文(IMO)中使用 ob_start() 的原因是,如果您在阻止 header() 工作的标头之前有不可避免的输出。
它不起作用的原因是因为 ob_start() 捕获了所有输出(在这种情况下 echo "redirecting now....";)并且直到 ob_end_flush() 才将其吐出。在脚本到达 ob_end_flush() 之前,您已经使用 header() 重定向了页面。
在使用 header() 之前你不能输出任何东西
HTTP-Headers 应该在服务器的任何输出之前发送。如果您之前有输出,服务器将输出警告,例如“标头已发送”