使用 ob start 的典型用法和原因

当你在页面上有重定向时,ob_start 特别方便。例如,以下代码将不起作用:

Hello!
<?php
  header("Location: somepage.php");
?>

将给出的错误类似于:headers already sent by <xxx> on line <xxx>

为了解决这个问题,你可以在页面的开头写这样的东西:

<?php
  ob_start();
?>

在页面的末尾有类似的内容:

<?php
  ob_end_flush();
?>

这会将所有生成的内容存储到输出缓冲区中,并一次显示。因此,如果你的页面上有任何重定向调用,那么这些调用将在发送任何数据之前触发,从而消除发生 headers already sent 错误的可能性。