สำหรับการแก้ปัญหาดังกล่าวที่ผมใช้คือ
หลังจากรับค่า POST มาแล้ว ให้ทำการ query ให้เรียบร้อย แล้วใช้คำสั่ง redirect ไปหน้าที่ต้องการ ถ้าเป็นหน้าเดิมกับฟอร์มก็ redirect ไปหน้านั้นเลย แต่ถ้าจำเป็นต้องนำค่าที่ได้จากการโพสมาใช้ต่อ ให้ใช้ Session เก็บค่าแทนครับ ยกตัวอย่างดังนี้
<?
if($_POST) {
// นำค่าที่ได้ไป Update หรือ Insert ตามที่ต้องการ
// ยกตัวอย่างว่าต้องการนำค่า point ไปใช้งานต่อเมื่อกลับไปหน้าเดิม
$_SESSION["point"] = $_POST["point"];
// หลังจากนั้นสั่ง Redirect ไปหน้าที่ต้องการ และปิดด้วย exit(); ป้องกันมันไปทำการรันข้อมูลด้านล่าง
header("location: form.php");
exit;
}
?>
และที่หน้า form.php ก็จะได้ค่า $_SESSION["point"] ที่มาจากฟอร์มแล้วครับ
ผมเข้าใจปัญหาที่อธิบายมา ที่หน้าที่รับค่า POST นั้นจะยังติดค่า Action การ Post อยู่ ถ้าเกิดการ Refresh หน้าจอ และผมคิดว่าจุดนี้ทำให้เกิด Bug ในโปรแกรมง่ายมากๆ ด้วย อยากแนะนำให้ redirect ซ้ำอีกทีจะช่วยให้ลดปัญหาเหล่านี้ลงได้ระดับนึงครับ
ปล. อธิบายเพิ่มเติมจากท่านอื่นๆ นะครับ เพราะูดูแล้วแนวทางเดียวกัน
