<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
?>
แล้วถ้าลองสร้างหน้าใหม่ .php แล้วลองใส่ code 3 บรรทัดนี่ลองเคาะดูมันจะไป
http://www.example.com 
ไหมครับ
จาก Manual PHP
ลองlink ไปเวปอื่นครับ ดูว่าได้มัย
มันจะมี
//Set buffer in memory before to send cilent
ob_start();
...
...
...
...
ob_end_flush();
exit;
ลองปิดหัวท้ายดูครับ
ตรงนี้บ้างทีก็งงครับ
มันเกี่ยวกับ clear cach
ปล. ถ้าไม่ได้จริงๆ
<META HTTP-EQUIV="Refresh" CONTENT="3;URL=http://www.example.com/test.html">

ผมว่าคำตอบนี้ใช่เลย
เท่าที่เคยเขียนมา เมื่อมีการส่งค่าใดๆก่อนคำสั่ง header (หรือ session 9ฯ9) มันจะบอกว่า header ถูกส่งไปแล้ว
ดังนั้น เราจึงต้องใช้ ob_start(); (เอาให้อยู่บนสุดเลย ก่อนคำสั่งใดๆ) และปิดด้วย ob_end_flush(); .ในบรรทัดสุดท้าย

หลังจากนั้นผมก็ไม่เคยเจอปัญหา header already sent อีกเลย...

(ถ้าใช้ include ก็ต้องใช้ก่อนที่จะ include นะเออ T^T)
-------------------------------------------+
ไฟล์ b.php
<?
ob_start();
$ab=$_POST['a'];
if($ab){
header("location: c.php");
}
ob_end_flush();
?>
