Monday, June 27, 2005
PHP redirect error
นั่งปรับปรุงเว็บส่วนตัวอยู่ตอนนี้ สร้างฟอร์มให้ป้อนข้อมูล แล้วส่งไปเขียนลง MySQL เขียนเสร็จก็จะให้ redirect กลับไปที่เมนูหลักด้วยคำสั่งดังนี้
header("Location:./index.php?menu=0200&write=1"); // redirect ->
ปรากฏว่าเบราซ์เซอร์ฟ้อง error ดังข้างล่างแล้วก็หยุดทำงาน
Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\veerawat\0200-wrcomment.php:8) in C:\Apache2\htdocs\veerawat\0200-wrcomment.php on line 23
วิธีการแ ก้ไขต้องเข้าไปที่ไฟล์ php.ini แล้วเข้าไปหาไดเร็กทีฟที่ชื่อว่า output_buffering ครับ โดยค่า default มาแล้วมันจะเป็น Off อยู่ให้เราแก้เป็น On บันทึกไฟล์ php.ini แล้วอย่าลืม restart Apache ใหม่ครับ
; Output buffering allows you to send header lines (including cookies) even
; after you send body content, at the price of slowing PHP's output layer a
; bit. You can enable output buffering during runtime by calling the output
; buffering functions. You can also enable output buffering for all files by
; setting this directive to On. If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = On
header("Location:./index.php?menu=0200&write=1"); // redirect ->
ปรากฏว่าเบราซ์เซอร์ฟ้อง error ดังข้างล่างแล้วก็หยุดทำงาน
Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\veerawat\0200-wrcomment.php:8) in C:\Apache2\htdocs\veerawat\0200-wrcomment.php on line 23
วิธีการแ ก้ไขต้องเข้าไปที่ไฟล์ php.ini แล้วเข้าไปหาไดเร็กทีฟที่ชื่อว่า output_buffering ครับ โดยค่า default มาแล้วมันจะเป็น Off อยู่ให้เราแก้เป็น On บันทึกไฟล์ php.ini แล้วอย่าลืม restart Apache ใหม่ครับ
; Output buffering allows you to send header lines (including cookies) even
; after you send body content, at the price of slowing PHP's output layer a
; bit. You can enable output buffering during runtime by calling the output
; buffering functions. You can also enable output buffering for all files by
; setting this directive to On. If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = On