Re: [請益] header與output_buffering

看板PHP作者 (阿勳 )時間17年前 (2008/05/16 20:57), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《kylekai (一秒鐘等於永遠..)》之銘言: : ※ 引述《usnoraa (無)》之銘言: : 簡單的來說就是你的在 header 之前有輸出過其他的東西.. : 甚至是你的檔案沒有存成 no bom 的格式.. : 導致 bom 比你的程式還要早輸出... : 所以才會需要用 output_buffer 來緩存... : 藉此讓 header 有效果... : 解決方發. 檢查程式碼, 檢查存檔格式.. : 網路上應該可以找到一些 script 可以自動檢查目錄的檔案有沒有 bom . 我有使用過的 <?php //此文件用於快速測試UTF8編碼的文件是不是加了BOM,並可自動移除 //By Bob Shen $basedir="."; //修改此行為需要檢測的目錄,點表示當前目錄 $auto=1; //是否自動移除發現的BOM信息。1為是,0為否。 //以下不用改&#21160; if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>"; } closedir($dh); } function checkBOM ($filename) { global $auto; $contents=file_get_contents($filename); $charset[1]=substr($contents, 0, 1); $charset[2]=substr($contents, 1, 1); $charset[3]=substr($contents, 2, 1); if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) { if ($auto==1) { $rest=substr($contents, 3); rewrite ($filename, $rest); return (" ar."); } else { return (" f."); } } else return (" ."); } function rewrite ($filename, $data) { $filenum=fopen($filename,"w"); flock($filenum,LOCK_EX); fwrite($filenum,$data); fclose($filenum); } ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.231.131.217
文章代碼(AID): #18BOIlkU (PHP)
文章代碼(AID): #18BOIlkU (PHP)