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") ; ?>
- มีคำว่า Some text ถูกส่งออกไปแล้ว
- มีคำว่า <html> ถูกส่งออกไปแล้ว
- มี 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 } ?>






21 Comments
ผมทำตามทั้ง 3 วิธีแล้วยังแก้ไม่ได้เลย มันขึ้นอย่างนี้อ่ะครับ
PNG IHDR<z4Uง PLTE๔๊€ศ–€ ฯ\
อันนี้มันไม่เกี่่ยวกับปัญหา redirect แล้วล่ะครับ
จากที่เขียนมาน่าจะเกิดจากการใช้ charset utf8 ค่ะ
ขอบคุณคับ
ขอบคุณมากครับ ผมใช้ Javascript แทน ครับ เรียบร้อย หายห่วง
ให้เอา Tag <html> ออก ครับ
ขอบคุณครับ ผมใช้ Javascript เช่นกัน ใช้ได้ครับ :)
อีกกรณีของ utf-8 คือ เราต้องสั่ง save code แบบ utf-8 without BOM (BOM:Byte-Order Mark ) ไม่งั้นไล่โค้ดจนตายก็หาไม่เจอ
ขอบคุณค่ะ กำลังหาวิธีแก้พอดี
2.ใส่คำสั่ง ob_start() ใว้บนบรรทัดแรกสุดๆ ของไฟล์ (ไม่แนะนำ)
เพราะอะไรถึงไม่แนะนำครับ มันมีข้อเสียอย่างไรครับ รบกวนอธิบายหน่อยได้ไหมครับ
http://www.select2web.com/php/ob_start.html
ขอบคุณมากครับกำลังหาเลยครับ
แหล่มๆ แท้งกิ้ว
ขอบคุณมาก ๆ ค่ะ
ขอบคุณครับ มีประโยชน์มาก
ขอบคุณมากครับ ช่วยได้เยอะเลย ^^ ผมใช้วิธีแทรก script เอาก็ได้เลย
ผมไม่ค่อยเข้าใจที่คุณอธิบายการแก้ปัญหาเลยครับ
สวัสดีครับ ท่านผู้รู้ทุกท่านครับ ผมเป็นช่างมัครเล่น ได้ประกอบวงจรภาคขยายเสียง เพาเวอร์แอมปลิไฟร์ (MODIFY)-ME-300 MEขึ้นมาใช้งานตัวหนึ่ง ใช้ได้ดีมากครับ ใช้งานมาแล้ว2-3ปีแล้ว แต่เวลานี้เกิดปัญหาขึ้นกับเครื่องแก้ไม่ตก มันคล้ายๆไฟรั่ว
ออกที่ลำโพง ผมก็คิดว่าcคอนเดนเซอร์ รั่วเลยทำการเปลี่ยนทั้งหมด รวมถึง ไดโอด และ ซีเนอร์ไดโอด10 V ด้วยแต่ก็ไม่หาย
จึงเรียนท่านที่มีประสบการจะมีวิธีแก้บ้างครับ ขอขอบพระคุณอย่างสูง
มันเป็นเสียงที่ผิดปกตินะครับออกที่ลำโพง ทั้งๆที่ลดเสียงเพลงลงแล้ว ยังมีเสียง คล้ายๆฝนตกอยู่ ครับ
ถ้ามีวิธีแก้ไข ช่วยกรุณาเขียนข้อความไว้ให้ด้วยนะครับ แล้วคืนนี้ผมจะกลับมาอ่าน พอดีมีทุระข้างนอก ขอบคุณครับ อุทัย
ขอบคุณมาก ๆครับ กำลังเจออยู่พอดีเลย
….