การส่งฟอร์มไปยังฐานข้อมูลและเปลี่ยนเส้นทางใน PHP
สมมติว่าเรามีฟอร์มบางรูปแบบ:
<form method="POST">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
มาบันทึกข้อมูลจากฟอร์มนี้ลงในฐานข้อมูลกัน:
<?php
if (!empty($_POST)) {
// บันทึกลงในฐานข้อมูล
}
?>
อย่างไรก็ตาม มีปัญหาที่รอเราอยู่ตรงนี้: หากรีเฟรชหน้าเบราว์เซอร์ ฟอร์มจะถูกส่งและบันทึกอีกครั้ง ส่งผลให้ข้อมูลซ้ำซ้อน
เพื่อแก้ไขปัญหา หลังจากบันทึกฟอร์มแล้ว จำเป็นต้องดำเนินการเปลี่ยนเส้นทาง (redirect) ไปยังหน้าเดิม:
<?php
if (!empty($_POST)) {
// บันทึกลงในฐานข้อมูล
header('Location: form.php');
die();
}
?>
สร้างฟอร์มและดำเนินการบันทึกลงฐานข้อมูลหลังการส่ง แก้ไขปัญหาการบันทึกซ้ำหลังการส่ง