PHP 흔들림 방지 및 중복 제출 방지 구현 방법 비교

WBOY
풀어 주다: 2023-10-12 11:14:02
원래의
1208명이 탐색했습니다.

PHP 防抖和防重复提交的实现方式对比

PHP 손떨림 방지 및 중복 방지 제출 구현 방법 비교

웹 애플리케이션을 개발할 때 디바운스(Debounce) 및 중복 양식 제출 방지(Preventing Duplicate Form Submission)가 필요한 상황에 자주 직면하게 됩니다. 흔들림 방지는 사용자가 이벤트를 자주 트리거할 때 마지막으로 트리거된 작업만 실행하려는 것을 의미하는 반면, 반복 제출 방지는 사용자가 짧은 시간 내에 여러 번 양식을 제출할 때 다음을 보장해야 함을 의미합니다. 하나의 제출만 처리됩니다. 이 기사에서는 PHP에서 흔들림 방지 및 재제출 방지를 달성하는 여러 가지 방법을 비교하고 소개하는 데 중점을 두고 구체적인 코드 예제를 제공합니다.

  1. 손떨림 방지 구현 방법
    손떨림 방지는 마지막 트리거 이벤트 후 일정 시간 동안 해당 작업을 지연하도록 타이머를 설정하여 설정할 수 있습니다. 다음은 PHP를 사용하여 흔들림 방지를 구현하는 샘플 코드입니다.
function debounce($callback, $delay) {
    $timer = null;
    
    return function() use ($callback, $delay, &$timer) {
        if ($timer !== null) {
            clearTimeout($timer);
        }
        
        $timer = setTimeout($callback, $delay);
    };
}

// 使用防抖函数处理表单提交事件
$debouncedHandler = debounce(function() {
    // 处理表单提交逻辑
}, 1000);

// 绑定事件处理函数
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $debouncedHandler();
}
로그인 후 복사
  1. 반복 제출을 방지하는 방법
    양식의 반복 제출을 방지하는 방법은 다음과 같습니다.

2.1토큰 확인
토큰 사용 확인을 통해 각 양식 요청에 대해 고유 식별자를 생성하고 해당 식별자를 세션에 저장할 수 있습니다. 사용자가 양식을 제출하면 먼저 식별자가 존재하는지, 요청의 식별자와 일치하는지 확인하여 반복 제출인지 여부를 판단합니다. 다음은 토큰 확인을 구현하기 위해 PHP를 사용하는 샘플 코드입니다:

session_start();

function generateToken() {
    return md5(uniqid(rand(), true));
}

function validateToken($token) {
    // 从 session 中获取 token
    $storedToken = $_SESSION['token'];

    return $storedToken && $token === $storedToken;
}

function removeToken() {
    // 从 session 中移除 token
    unset($_SESSION['token']);
}

// 生成 Token 并存储在 session 中
$_SESSION['token'] = generateToken();

// 处理表单提交逻辑
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $token = $_POST['token'];

    if (validateToken($token)) {
        // 执行表单提交操作
        // ...

        // 提交完成后移除 Token
        removeToken();
    } else {
        // Token 验证失败,可能是重复提交
        // 提示用户不要重复提交
    }
}
로그인 후 복사

2.2.Redirect
양식 제출 후 페이지 이동을 처리하기 위해 리디렉션을 사용하면 사용자가 양식을 반복적으로 제출하는 것을 효과적으로 방지할 수 있습니다. 사용자가 양식을 제출하면 먼저 제출 논리를 처리한 다음 헤더 기능을 사용하여 사용자를 새 페이지로 리디렉션합니다. 다음은 PHP를 사용하여 리디렉션을 구현하는 샘플 코드입니다.

// 处理表单提交逻辑
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 执行表单提交操作
    // ...

    // 重定向到新页面
    header("Location: success.php");
    exit;
}
로그인 후 복사

양식을 다시 제출하지 않고 위 코드의 success.php 是一个提示用户提交成功的页面,这样即使用户按下刷新按钮,也只会刷新 success.php 페이지입니다.

요약:
PHP 흔들림 방지 및 중복 방지 제출의 구현 방법을 비교하여 특정 요구 사항에 따라 애플리케이션을 보호하는 적절한 방법을 선택할 수 있습니다. 흔들림 방지는 사용자가 이벤트를 자주 트리거하는 것을 방지해야 하는 상황에 적합하며, 양식의 반복 제출을 방지하는 것은 사용자가 양식을 여러 번 제출하는 것을 방지하는 것입니다. 토큰 확인 및 리디렉션을 사용하는 것은 일반적이고 실행 가능한 두 가지 방법입니다. 개발자는 실제 상황에 따라 반복 제출을 방지하는 적절한 방법을 선택할 수 있습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!