>  기사  >  백엔드 개발  >  PHP에서 흔들림 방지 및 재제출 방지 기능을 구현하는 방법

PHP에서 흔들림 방지 및 재제출 방지 기능을 구현하는 방법

WBOY
WBOY원래의
2023-10-12 08:11:331180검색

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

PHP에서 흔들림 방지 및 중복 방지 제출 기능을 구현하는 방법

웹 개발에서 흔들림 방지 및 중복 방지 제출은 두 가지 일반적인 문제입니다. 흔들림 방지는 과도한 요청을 방지하기 위해 자주 발생하는 이벤트를 처리하는 데 사용됩니다. 이는 사용자가 동일한 양식을 여러 번 제출하는 것을 방지하는 것입니다. 이 기사에서는 PHP에서 이 두 가지 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

1. 손떨림 방지 기능 구현
손떨림 방지 기능은 주로 일정 시간 내에 한 번만 지정된 작업을 수행합니다. PHP에서는 세션을 사용하여 흔들림 방지 기능을 구현할 수 있습니다. 구체적인 단계는 다음과 같습니다.

  1. 먼저 "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. 다음으로 debounce() 함수를 사용하여 이벤트를 디바운스할 수 있습니다. 예를 들어, 사용자가 입력 상자에
<?php
function handleInput() {
   // 处理AJAX请求
}

debounce('handleInput', 1000);

를 입력하면 AJAX 요청이 트리거됩니다. 그 중 handleInput()为处理AJAX请求的函数,1000为防抖延迟时间,当用户输入框输入时,会在1秒后调用handleInput() 함수는 사용자가 계속해서 입력하는 경우 마지막 입력 작업만 수행합니다.

2. 반복 제출 방지 기능 구현
사용자가 양식을 다시 제출하는 것을 방지하는 것은 매우 일반적인 요구 사항입니다. 재제출 방지 기능은 토큰을 사용하여 구현할 수 있습니다. 구체적인 단계는 다음과 같습니다.

  1. 먼저 양식 페이지에서 고유한 토큰을 생성하고 세션에 저장합니다.
<?php
session_start();

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

$token = generateToken();
  1. 다음으로 양식 페이지의 토큰을 사용하여 양식이 제출될 때 확인을 위한 숨겨진 입력 필드를 생성하세요.
<input type="hidden" name="submit_token" value="<?php echo $token; ?>">
  1. 양식 처리 로직에서 제출된 토큰이 세션의 토큰과 일치하는지 확인하세요.
<?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'])) {
    // 处理表单提交逻辑
}

위 구현을 통해 사용자가 양식을 제출하면 PHP는 제출된 토큰이 세션의 토큰과 일치하는지 확인하고, 일치하지 않으면 양식 처리 로직이 실행됩니다. 반복제출임을 인지하고, 사용자에게 프롬프트하는 등 해당 처리를 할 수 있습니다.

요약
세션과 토큰의 협력을 통해 PHP에서 흔들림 방지 및 반복 제출 방지 기능을 구현할 수 있습니다. 이 글에서는 구체적인 구현 단계를 자세히 소개했으며, 참고용으로 해당 코드 예제를 제공합니다.

위 내용은 PHP에서 흔들림 방지 및 재제출 방지 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.