วิธีแก้ปัญหา Warning: Cannot modify header information – headers already sent by…

May 2008 | By admin | PHP | Tags : | อ่าน : 2801

Warning: Cannot modify header information – headers already sent by

ปัญหานี้เกิดจาก เรียกใช้คำสั่ง header() หลังจากมี output ส่งไปยัง client แล้ว

ดูตัวอย่างที่มีปัญหานะครับ

1.

<?php
echo "Some text" ;
header("Location:index.php") ;
?>

2.

<html>
<?php
header("Location:index.php") ;
?>

3.

<?php
$variable = 10 ;
?>
 
<?php
header("Location:index.php") ;
?>
  1. มีคำว่า Some text ถูกส่งออกไปแล้ว
  2. มีคำว่า <html> ถูกส่งออกไปแล้ว
  3. มี white space ถูกส่งออกไปแล้ว ระหว่างบล็อก php ทั้งสอง ( white space ได้แก่ ขึ้นบรรทัดใหม่,เคาะสเปชบาร์,แท็บ โดยรวมคือช่องว่างที่มองไม่เห็น)

มีวิธีแก้ 3 วิธี

1.หาให้เจอว่ามีเอ้าพุตอะไรออกไปในบรรทัดที่ php ฟ้อง

2.ใส่คำสั่ง ob_start() ใว้บนบรรทัดแรกสุดๆ ของไฟล์ (ไม่แนะนำ)

3.เอาคำสั่งจาวาสคริปเข้าช่วยในการ redirect

หลังจากที่คุณกระทำการอะไรบางอย่างเสร็จและต้องการใช้คำสั่ง header() redirect ไปเพจอื่น ให้เปลี่ยนจากคำสั่ง header() เป็นเซตค่าตัวแปรสักตัว

$complete = "true" ;

แล้วทีนี้ตรงระหว่างแท็ก <head></head> ใส่คำสั่งนี้เข้าไป

<?php if ($complete=="true"){ ?>
<script type="text/javascript">
	window.location="gbook.php";
</script>
<?php } ?>

บทความน่าสนใจ

  1. php redirect สั่งเด้งฟ้าผ่า
  2. ob_start() กับคำกล่าวที่ว่า ใช้ได้แต่ไม่แนะนำ
  3. .note .success .warning css class
  4. วิธีแก้ปัญหา Parse error: syntax error, unexpected T_VARIABLE
  5. วิธีแก้ปัญหา Parse error: syntax error, unexpected ‘}’
Tags:

ผู้เขียน:

เว็บไซต์ :http://

มี 11 ความเห็น ในบทความเรื่อง “วิธีแก้ปัญหา Warning: Cannot modify header information – headers already sent by…”

  1. napasool says:

    ผมทำตามทั้ง 3 วิธีแล้วยังแก้ไม่ได้เลย มันขึ้นอย่างนี้อ่ะครับ
    ‰PNG  IHDR<z4Uง PLTE๔๊€ศ–€ ฯ\

  2. platoosom says:

    อันนี้มันไม่เกี่่ยวกับปัญหา redirect แล้วล่ะครับ

  3. giffany says:

    จากที่เขียนมาน่าจะเกิดจากการใช้ charset utf8 ค่ะ

  4. offering says:

    ขอบคุณคับ

  5. Tomanon says:

    ขอบคุณมากครับ ผมใช้ Javascript แทน ครับ เรียบร้อย หายห่วง

  6. PN says:

    ให้เอา Tag <html> ออก ครับ

  7. rock says:

    ขอบคุณครับ ผมใช้ Javascript เช่นกัน ใช้ได้ครับ :)

  8. boy says:

    อีกกรณีของ utf-8 คือ เราต้องสั่ง save code แบบ utf-8 without BOM (BOM:Byte-Order Mark ) ไม่งั้นไล่โค้ดจนตายก็หาไม่เจอ

  9. plajom says:

    ขอบคุณค่ะ กำลังหาวิธีแก้พอดี

  10. Ars_BeaL says:

    2.ใส่คำสั่ง ob_start() ใว้บนบรรทัดแรกสุดๆ ของไฟล์ (ไม่แนะนำ)

    เพราะอะไรถึงไม่แนะนำครับ มันมีข้อเสียอย่างไรครับ รบกวนอธิบายหน่อยได้ไหมครับ

แสดงความเห็น

ชื่อ *
Email *
Website
ความคิดเห็น