เซสชันของ PHP สามารถใช้เพื่อป้องกันการแทรกข้อมูลซ้ำเมื่อส่งฟอร์ม เซสชัน PHP ตั้งค่าตัวแปรเซสชัน (เช่น $_SESSION['posttimer']) ที่เก็บ timestamp ปัจจุบันเมื่อมีการ POST ก่อนประมวลผลฟอร์มใน PHP ตัวแปร $_SESSION['posttimer'] จะถูกตรวจสอบว่ามีอยู่หรือไม่ และตรวจสอบความแตกต่างของ timestamp (เช่น 2 หรือ 3 วินาที) วิธีนี้ช่วยระบุและกำจัดการแทรกข้อมูลที่เป็นซ้ำจริง
ฟอร์มง่ายๆ:
// form.html <form action="my_session_file.php" method="post"> <input type="text" name="bar" /> <input type="submit" value="Save"> </form>
ไฟล์ 'my_session_file.php' ที่อ้างอิงข้างต้นจะมีโค้ดดังนี้:
ตัวอย่าง
if (isset($_POST) && !empty($_POST)) { if (isset($_SESSION['posttimer'])) { if ( (time() - $_SESSION['posttimer']) <= 2) { // น้อยกว่า 2 วินาทีนับจากโพสต์ล่าสุด } else { // มากกว่า 2 วินาทีนับจากโพสต์ล่าสุด } } $_SESSION['posttimer'] = time(); }ผลลัพธ์
จะได้ผลลัพธ์ดังนี้:
ข้อมูลฟอร์มที่ส่งมาไม่ซ้ำกัน
ตัวแปรเซสชัน posttimer ถูกตั้งค่า และเมื่อมีความแตกต่างของเวลา 2 วินาทีหรือน้อยกว่าก่อนการดำเนินการ POST ล่าสุด สามารถกำจัดได้ มิฉะนั้นจะถูกเก็บไว้ ฟังก์ชัน time() ถูกเรียกและค่าถูกกำหนดให้ตัวแปรเซสชัน posttimer