Warning: Cannot modify header information – headers already sent by
ปัญหานี้เกิดจาก เรียกใช้คำสั่ง header() หลังจากมี output ส่งไปยัง client แล้ว
ดูตัวอย่างที่มีปัญหานะครับ
1. มีคำว่า Some text ถูกส่งออกไปแล้ว
<?php echo "Some text" ; header("Location:index.php") ; ?> |
2. มีคำว่า <html> ถูกส่งออกไปแล้ว
<html> <?php header("Location:index.php") ; ?> |
3. มี white space ถูกส่งออกไปแล้ว ระหว่างบล็อก php ทั้งสอง ( white space ได้แก่ ขึ้นบรรทัดใหม่,เคาะ space bar,tab โดยรวมคือช่องว่างที่มองไม่เห็น)
<?php $variable = 10 ; ?> <?php header("Location:index.php") ; ?> |
4. ดูจากโค้ดไม่น่ามีปัญหาอะไรเลย เพราะมีคำสั่งเดียว แต่ถ้าเซฟไฟล์เป็น UTF-8 With BOM เจอแน่
<?php header("Location:index.php") ; ?> |
มีวิธีแก้ 3 วิธี
1.หาให้เจอว่ามีเอ้าพุตอะไรออกไปในบรรทัดที่ php ฟ้อง
2.ใส่คำสั่ง ob_start() ใว้บนบรรทัดแรกสุดๆ ของไฟล์ (ไม่แนะนำ)
3.เซฟไฟล์เป็น UTF-8 Without BOM
4.เอาคำสั่งจาวาสคริปเข้าช่วยในการ redirect
หลังจากที่คุณกระทำการอะไรบางอย่างเสร็จและต้องการใช้คำสั่ง header() redirect ไปเพจอื่น ให้เปลี่ยนจากคำสั่ง header() เป็นเซตค่าตัวแปรสักตัว
$complete = “true” ;
แล้วทีนี้ตรงระหว่างแท็ก <head></head> ใส่คำสั่งนี้เข้าไป
<?php if ($complete=="true"){ ?> <script type="text/javascript"> window.location="gbook.php"; </script> <?php } ?> |
napasool says:
21/09/2552 at 21/09/2552
ผมทำตามทั้ง 3 วิธีแล้วยังแก้ไม่ได้เลย มันขึ้นอย่างนี้อ่ะครับ
PNG IHDR<z4Uง PLTE๔๊€ศ–€ ฯ\
administrator says:
22/09/2552 at 22/09/2552
อันนี้มันไม่เกี่่ยวกับปัญหา redirect แล้วล่ะครับ
giffany says:
08/10/2552 at 08/10/2552
จากที่เขียนมาน่าจะเกิดจากการใช้ charset utf8 ค่ะ
offering says:
23/10/2552 at 23/10/2552
ขอบคุณคับ
Tomanon says:
13/11/2552 at 13/11/2552
ขอบคุณมากครับ ผมใช้ Javascript แทน ครับ เรียบร้อย หายห่วง
PN says:
05/01/2553 at 05/01/2553
ให้เอา Tag <html> ออก ครับ
rock says:
08/06/2553 at 08/06/2553
ขอบคุณครับ ผมใช้ Javascript เช่นกัน ใช้ได้ครับ :)
boy says:
10/06/2553 at 10/06/2553
อีกกรณีของ utf-8 คือ เราต้องสั่ง save code แบบ utf-8 without BOM (BOM:Byte-Order Mark ) ไม่งั้นไล่โค้ดจนตายก็หาไม่เจอ
plajom says:
03/08/2553 at 03/08/2553
ขอบคุณค่ะ กำลังหาวิธีแก้พอดี
Ars_BeaL says:
25/08/2553 at 25/08/2553
2.ใส่คำสั่ง ob_start() ใว้บนบรรทัดแรกสุดๆ ของไฟล์ (ไม่แนะนำ)
เพราะอะไรถึงไม่แนะนำครับ มันมีข้อเสียอย่างไรครับ รบกวนอธิบายหน่อยได้ไหมครับ
administrator says:
25/08/2553 at 25/08/2553
http://www.select2web.com/php/ob_start.html
uthai says:
19/12/2553 at 19/12/2553
ขอบคุณมากครับกำลังหาเลยครับ
tong says:
21/12/2553 at 21/12/2553
แหล่มๆ แท้งกิ้ว
ao says:
01/04/2554 at 01/04/2554
ขอบคุณมาก ๆ ค่ะ
silentstart says:
15/06/2554 at 15/06/2554
ขอบคุณครับ มีประโยชน์มาก
Panuphan says:
07/09/2554 at 07/09/2554
ขอบคุณมากครับ ช่วยได้เยอะเลย ^^ ผมใช้วิธีแทรก script เอาก็ได้เลย
ohno!! says:
08/09/2554 at 08/09/2554
ผมไม่ค่อยเข้าใจที่คุณอธิบายการแก้ปัญหาเลยครับ
อุทัย says:
13/10/2554 at 13/10/2554
สวัสดีครับ ท่านผู้รู้ทุกท่านครับ ผมเป็นช่างมัครเล่น ได้ประกอบวงจรภาคขยายเสียง เพาเวอร์แอมปลิไฟร์ (MODIFY)-ME-300 MEขึ้นมาใช้งานตัวหนึ่ง ใช้ได้ดีมากครับ ใช้งานมาแล้ว2-3ปีแล้ว แต่เวลานี้เกิดปัญหาขึ้นกับเครื่องแก้ไม่ตก มันคล้ายๆไฟรั่ว
ออกที่ลำโพง ผมก็คิดว่าcคอนเดนเซอร์ รั่วเลยทำการเปลี่ยนทั้งหมด รวมถึง ไดโอด และ ซีเนอร์ไดโอด10 V ด้วยแต่ก็ไม่หาย
จึงเรียนท่านที่มีประสบการจะมีวิธีแก้บ้างครับ ขอขอบพระคุณอย่างสูง
อุทัย says:
13/10/2554 at 13/10/2554
มันเป็นเสียงที่ผิดปกตินะครับออกที่ลำโพง ทั้งๆที่ลดเสียงเพลงลงแล้ว ยังมีเสียง คล้ายๆฝนตกอยู่ ครับ
อุทัย says:
13/10/2554 at 13/10/2554
ถ้ามีวิธีแก้ไข ช่วยกรุณาเขียนข้อความไว้ให้ด้วยนะครับ แล้วคืนนี้ผมจะกลับมาอ่าน พอดีมีทุระข้างนอก ขอบคุณครับ อุทัย
code-father says:
17/10/2554 at 17/10/2554
ขอบคุณมาก ๆครับ กำลังเจออยู่พอดีเลย
….
yuttapon says:
09/01/2556 at 09/01/2556
เพิ่มเติมครับ ปัญหาบางครั้งเกี่ยวกับ whitespace คับ ลบมันออกซะ
99 times out of 100 it is a blank line AFTER the closing ?> tag at the end of the file.
I have posted about this before (too lazy to try to create a link to it) but to summarize what I said… just do not use the closing ?> tag in the file if there is nothing coming after it. It will marginally speed up your code and will mean you never get the above issue.
If you are interested in some more explanation as to why and also some other tips on coding standards just search through my posts, there are a couple of posts about it from late last year
วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย says:
09/01/2556 at 09/01/2556
ฝรั่งบางคนเลยนิยมเขียนแบบ เปิดแท็ก แต่ไม่ปิด เพื่อป้องกันปัญหาแบบที่ท่าน yuttapon กล่าวมา ซึ่ง PHP มันอนุญาติให้ทำได้
noonuy says:
22/01/2556 at 22/01/2556
ขอบคุณมากๆ ค่ะ กำลังมีปัญหาอยู่พอดี เอาวิธีแบบใส่ code Javascript แล้ว ใช้ได้ค่ะ ไม่มีปัญหา
Game says:
15/08/2557 at 15/08/2557
ขอบคุณครับ กำลังหาทางแก้ยุพอดีเลย
kook says:
11/09/2557 at 11/09/2557
ขอบคุณมากเลยนะคะ