Computer >> Máy Tính >  >> Lập trình >> PHP

Làm thế nào để ngăn chặn nhiều lần chèn khi gửi biểu mẫu trong PHP?

Phiên PHP có thể được sử dụng để ngăn chặn nhiều lần chèn khi gửi biểu mẫu. Phiên PHP đặt một biến phiên (giả sử $ _SESSION ['posttimer']) đặt dấu thời gian hiện tại trên POST. Trước khi xử lý biểu mẫu trong PHP, biến $ _SESSION ['posttimer'] được kiểm tra sự tồn tại của nó và kiểm tra sự khác biệt về dấu thời gian cụ thể (giả sử 2 hoặc 3 giây). Bằng cách này, những phần chèn thực sự là bản sao có thể được xác định và loại bỏ.

Biểu mẫu đơn giản -

// form.html
<form action="my_session_file.php" method="post">
   <input type="text" name="bar" />
   <input type="submit" value="Save">
</form>

Tham chiếu đến ‘my_session_file.php’ ở trên sẽ có các dòng mã bên dưới -

Ví dụ

if (isset($_POST) && !empty($_POST)) {
   if (isset($_SESSION['posttimer'])) {
      if ( (time() - $_SESSION['posttimer']) <= 2) {
         // less then 2 seconds since last post
      } else {
         // more than 2 seconds since last post
      }
   }
   $_SESSION['posttimer'] = time();
}

Đầu ra

Điều này sẽ tạo ra kết quả sau -

The unique form submitted data.

Biến phiên posttimer được đặt và khi có chênh lệch thời gian từ 2 giây trở xuống trước thao tác ĐĂNG cuối cùng, biến này có thể bị xóa. Nếu không, nó sẽ được lưu trữ. Hàm thời gian được gọi và giá trị được gán cho biến phiên posttimer.