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

반복 제출을 방지하기 위해 PHP에서 흔들림 방지 기능을 구현하는 방법

王林
王林원래의
2023-10-12 09:36:24769검색

如何在 PHP 中实现防抖功能,避免重复提交

반복 제출을 피하기 위해 PHP에서 손떨림 방지 기능을 구현하는 방법

손떨림 방지 기능은 사용자가 지속적으로 이벤트를 트리거할 때 이벤트 처리 기능이 한 번만 실행되고 처리되지 않음을 의미합니다. 마지막 트리거 이후 일정 시간 동안 다시 실행됩니다. 실제 개발에서 사용자는 양식을 반복적으로 제출하는 상황에 자주 직면하게 됩니다. 흔들림 방지 기능을 사용하면 이러한 상황을 효과적으로 방지할 수 있습니다.

PHP에서 손떨림 방지 기능을 구현하는 방법에는 여러 가지가 있습니다. 아래에서는 일반적인 구현 방법을 소개하고 구체적인 코드 예를 제시하겠습니다.

  1. 세션을 사용하여 마지막 커밋의 타임스탬프를 기록하세요.
// 开启 Session
session_start();

// 获取当前时间戳
$currentTimestamp = time();

// 获取上一次提交的时间戳
$lastTimestamp = $_SESSION['lastTimestamp'] ?? 0;

// 判断时间间隔是否小于指定的防抖时间(例如5秒)
if ($currentTimestamp - $lastTimestamp < 5) {
    echo '请勿重复提交';
    exit;
}

// 更新上一次提交的时间戳
$_SESSION['lastTimestamp'] = $currentTimestamp;

이 예에서는 세션을 사용하여 마지막 커밋의 타임스탬프를 기록합니다. 현재 타임스탬프를 마지막 제출의 타임스탬프와 비교하여 시간 간격이 지정된 흔들림 방지 시간(예: 5초)보다 짧은지 확인합니다. 시간 간격이 흔들림 방지 시간보다 짧은 경우 반복 제출로 간주될 수 있으며 프롬프트 정보가 직접 출력되고 스크립트 실행이 종료됩니다.

Session을 사용하려면 스크립트 시작 부분에서 session_start() 함수를 호출하여 Session을 열어야 한다는 점에 유의해야 합니다.

  1. 토큰을 사용하여 반복 제출을 방지하세요.

중복 제출을 방지하기 위해 일반적으로 사용되는 또 다른 방법은 토큰을 사용하는 것입니다. 양식이 제출될 때마다 고유한 토큰이 생성되어 세션 또는 양식 숨겨진 필드에 저장됩니다. 백그라운드에서 양식 제출을 처리할 때 먼저 토큰이 유효한지 확인하고 유효한 경우 계속 처리하고, 그렇지 않으면 프롬프트 메시지가 출력됩니다.

다음은 반복 제출을 방지하기 위해 토큰을 사용하는 샘플 코드입니다.

// 开启 Session
session_start();

// 生成一个唯一的 Token
$token = md5(uniqid(rand(), true));

// 将 Token 保存在 Session 中
$_SESSION['token'] = $token;

// 在表单中输出隐藏域,将 Token 传递给后台
echo '<input type="hidden" name="token" value="' . $token . '">';

// 处理表单提交
if ($_POST['token'] !== $_SESSION['token']) {
    echo '请勿重复提交';
    exit;
}

// 继续处理表单数据
// ...

이 예에서는 양식이 제출될 때마다 고유한 토큰을 생성하고 세션에 토큰을 저장합니다. 프런트엔드 양식의 숨겨진 필드를 통해 토큰을 백엔드로 전달합니다. 백그라운드에서 양식 제출을 처리할 때 먼저 양식에서 얻은 토큰이 세션에 저장된 토큰과 동일한지 확인합니다. 동일하지 않으면 반복 제출로 간주되어 프롬프트 정보가 직접 출력됩니다. 스크립트 실행이 종료됩니다.

요약하자면 세션이나 토큰을 사용하면 PHP에서 흔들림 방지 기능을 구현하여 반복 제출을 피할 수 있습니다. 특정 요구 사항과 시나리오에 따라 적절한 구현 방법을 선택하세요. 위는 일반적으로 사용되는 두 가지 구현 방법이며 참조용으로 구체적인 코드 예제가 제공됩니다. 도움이 되기를 바랍니다.

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

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