현재 위치: > 최신 기사 목록> PHP는 방지 기능 방지 기능을 구현합니다. 양식의 반복 제출을 효과적으로 피하는 두 가지 방법

PHP는 방지 기능 방지 기능을 구현합니다. 양식의 반복 제출을 효과적으로 피하는 두 가지 방법

M66 2025-06-23

셰이크 방지 기능과 그 중요성이란 무엇입니까?

방지 기능은 사용자가 이벤트를 여러 번 빠르게 트리거 할 때 이벤트 처리 기능을 한 번만 실행할 수 있고 마지막 방아쇠 후 일정 기간 내에 재 실행이 방지된다는 사실을 말합니다. 웹 개발에서 반복되는 제출은 데이터 중복성, 서버 부담 증가 및 논리적 오류로 이어질 수 있기 때문에 사용자가 양식을 반복적으로 제출하는 것을 방지하는 것이 매우 중요합니다.

방법 1 : 세션을 사용하여 타임 스탬프를 기록하여 셰이크를 달성합니다.

간단하고 효과적인 방법은 세션을 사용하여 사용자의 마지막 제출의 타임 스탬프를 기록하고 현재 시간과 마지막 제출 시간 간의 간격을 비교하여 제출물을 허용 할 수 있는지 여부를 결정하는 것입니다. 다음 예는 특정 구현을 보여줍니다.

// 세션을 켭니다
session_start ();
<p>// 현재 타임 스탬프를 얻습니다<br>
$ currentTimeStamp = time ();</p>
<p>// 마지막 제출 된 제출물의 타임 스탬프를 얻습니다<br>
$ lasttimestamp = $ _session [ &#39;lasttimestamp&#39;] ?? 0;</p>
<p>// 시간 간격이 지정된 방지 시간보다 적은지 여부를 결정합니다 (예 : 5 초)<br>
if ($ currentTimestamp- $ lasttimestamp <5) {<br>
echo &#39;제출을 반복하지 마십시오&#39;;<br>
출구;<br>
}</p>
<p>// 제출의 마지막 타임 스탬프를 업데이트합니다<br>
$ _session [ &#39;lasttimestamp&#39;] = $ currentTimeStamp;<br>

이 코드는 사용자가 두 제출 시간 간격이 설정 값보다 적은지 여부를 결정하여 짧은 시간 내에 반복적으로 양식을 제출하는 것을 피합니다. 그것을 사용할 때 스크립트가 Session_Start () 호출을 시작하여 세션 지원을 활성화하십시오.

방법 2 : 토큰 메커니즘을 사용하여 반복 제출을 방지합니다.

또 다른 더 안전한 방지 방법은 토큰을 사용하는 것입니다. 양식이 렌더링 될 때마다 고유 한 토큰이 생성되고 세션에 저장되며 양식에 숨겨진 필드로 배치됩니다. 제출시 배경은 토큰이 일치하는지 여부를 확인하여 중복 제출인지 여부를 확인합니다.

// 세션을 켭니다
session_start ();
<p>// 고유 한 토큰을 생성합니다<br>
$ token = md5 (uniqid (rand (), true);</p>
<p>// 세션에서 토큰을 저장합니다<br>
$ _session [ &#39;토큰&#39;] = $ 토큰;</p>
<p>// 양식으로 토큰을 전달합니다<br>
에코 &#39;<input type="hidden" name="token" value="' . $token . '"> &#39;;;</p>
<p>// 양식 제출을 처리 할 때 토큰을 확인하십시오<br>
if ($ _post [ &#39;token&#39;]! == $ _session [ &#39;token&#39;]) {<br>
echo &#39;제출을 반복하지 마십시오&#39;;<br>
출구;<br>
}</p>
<p>// 양식 데이터를 계속 처리합니다<br>
// ...<br>

이 방법은 양식이 반복적으로 제출되는 것을 효과적으로 방지하며 위조하기가 어렵습니다. 더 엄격한 데이터 보호가 필요한 시나리오에 적합합니다.

요약

세션 타임 스탬프 제어 및 토큰 검증의 두 가지 방법을 통해 PHP 개발자는 셰이크 방지 기능을 유연하게 구현하여 사용자의 반복적 인 양식 제출으로 인한 문제를 효과적으로 피할 수 있습니다. 실제 프로젝트 요구 사항 및 안전 요구 사항에 따라 선택할 수있는 특정 계획을 조정할 수 있습니다. 위의 예제가 프로젝트 개발에 대한 실질적인 참조를 제공 할 수 있기를 바랍니다.