Home  >  Article  >  Backend Development  >  How to implement anti-shaking and anti-resubmission functions in PHP

How to implement anti-shaking and anti-resubmission functions in PHP

WBOY
WBOYOriginal
2023-10-12 08:11:331184browse

如何在 PHP 中实现防抖和防重复提交的功能

How to implement anti-shake and anti-duplicate submission functions in PHP

In web development, anti-shake and anti-duplicate submission are two common problems. Anti-shake is used to handle frequently triggered events to prevent excessive requests; anti-repetitive submission is to prevent users from submitting the same form multiple times. This article will introduce how to implement these two functions in PHP and provide specific code examples.

1. Implementation of anti-shake function
The anti-shake function mainly performs only one specified operation within a certain period of time. In PHP, you can use session to achieve anti-shake function. The specific steps are as follows:

  1. First, create a file named "debounce.php".
<?php
session_start();

function debounce($callback, $delay = 1000) {
    if(isset($_SESSION['debounce_timer'])) {
        return;
    }

   $callback();

   $_SESSION['debounce_timer'] = time() + $delay;
   register_shutdown_function('debounce_reset_timer');
}

function debounce_reset_timer() {
   unset($_SESSION['debounce_timer']);
}
  1. Next, you can use the debounce() function to debounce an event. For example, an AJAX request is triggered when the user inputs in the input box:
<?php
function handleInput() {
   // 处理AJAX请求
}

debounce('handleInput', 1000);

Among them, handleInput() is the function that handles the AJAX request, and 1000 is the anti-shake delay time. When the user enters When inputting into the box, the handleInput() function will be called after 1 second. If the user continuously inputs, only the last input operation will be performed.

2. Implementation of anti-repeated submission function
Preventing users from resubmitting forms is a very common requirement. The anti-re-submission function can be achieved by using tokens. The specific steps are as follows:

  1. First, generate a unique token on the form page and save it in the session.
<?php
session_start();

function generateToken() {
    $_SESSION['submit_token'] = md5(uniqid(rand(), true));
    return $_SESSION['submit_token'];
}

$token = generateToken();
  1. Next, use the token on the form page to generate a hidden input field for verification when the form is submitted.
<input type="hidden" name="submit_token" value="<?php echo $token; ?>">
  1. In the form processing logic, verify whether the submitted token matches the token in the session.
<?php
session_start();

function validateToken($token) {
    if(isset($_SESSION['submit_token']) && $token === $_SESSION['submit_token']) {
        unset($_SESSION['submit_token']);
        return true;
    }

    return false;
}

if($_POST && validateToken($_POST['submit_token'])) {
    // 处理表单提交逻辑
}

Through the above implementation, when the user submits the form, PHP will verify whether the submitted token matches the token in the session. If they match, the form processing logic will be executed; if they do not match, it means it is a duplicate. Submit, you can do corresponding processing, such as prompting the user.

Summary
Through the cooperation of session and token, the anti-shake and anti-resubmission functions can be implemented in PHP. The specific implementation steps have been introduced in detail in this article, and corresponding code examples are provided for reference. I hope it will be helpful to you.

The above is the detailed content of How to implement anti-shaking and anti-resubmission functions in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn