2012年2月13日 星期一

PHP中解決headers already sent的王者之道!

相信常常使用session、header的朋友們常常遇到這個警告訊息!
這通常是不難解決,只要注意不要在對瀏覽器送出head資訊前就送出了body資訊即可。
但是有時候在做多國語言時,就發生了一些奇怪的狀況,明明沒有送出空白字元,
依然出現這個警告,偏偏因為是語言檔,又不能用ANSI編碼(註:我遇到問題時是用UTF-8編碼)
這時候可以使用下面得指令解決!
ob_start();
請注意這一行程式一定要放在最前面!

為什麼它能解決?因為他打開了一個叫做輸出緩衝(Output Buffer)的東西,詳細的技術原理
現在沒空鑽研,就先用吧!

1 則留言:

  1. 輸出緩衝(Output Buffer)原理補充:
    就是Server上先空出一段一記憶體來當緩衝區,將原本要輸出到Body的資訊先暫存在Server的緩衝區中,直到PHP頁面執行完時再送到Client端,這時候就會把該送給HEAD的先送出去,因此就就不會發生headers already sent的錯誤了~

    回覆刪除