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 ครับ
บางคนอาจเคยเจอ 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 ครับ