session_start() bug ของ UTF-8

Warning: Cannot modify header information - headers already sent by Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent......

บางคนอาจเคยเจอ error นี่เมื่อต้องใช้ session หรือ แม้แต่ cookie กับเพจที่เป็น UTF-8 ถึงแม้ว่า page นี้ตอนที่เป็น ANSI (แบบ text ที่ใช้กับ TIS-620) จะไม่เคยมีปัญหาใดๆ ปัญหานี้เกิดจากการที่เมื่อ Save เพจเป็น UTF-8 แล้ว โปรแกรมที่ใช้ จะมีการใส่ BOM (byte order mark) ลงไปในเพจด้วย ซึ่งจะทำให้ session_start() ไม่ได้อยู่อักษรตัวแรกของเพจ ก็เลย error ครับ

ปัญหานี้มักจะเกิดหากมีการแก้ไขเพจผ่าน Notepad ของวินโดวส์ หรือด้วย Dreamwaever ครับ

การแก้ไข ก็คือให้ใช้โปรแกรม แปลง ที่จะแปลงเป็น UTF-8 ที่ไม่ใส่ BOM ครับ เช่น EditPlus โดยการเปิดไฟล์แล้ว SaveAs เป็น UTF-8 ครับ
ผู้เขียน Goragod โพสต์เมื่อ 01 เม.ย. 2551 เปิดดู 13,148 ป้ายกำกับ session

เรื่องที่เกี่ยวข้อง

^