使用 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 錯誤的可能性。