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错误的可能性。