인터넷이 개발되면서 양식 제출은 웹 응용 프로그램에서 필수 기능이되었습니다. 그러나 반복 된 양식 제출은 네트워크 지연 또는 사용자 오용으로 인한 데이터 오류 또는 프로그램 예외를 초래할 수 있습니다. 이 문제를 해결하기 위해 PHP 방지 기술은 양식 제출의 정확성을 보장하고 반복적 인 제출을 피할 수 있습니다.
방지 기술은 운영 주파수를 제어하는 기술로, 지정된 시간 간격 내에서 작동이 한 번만 수행되도록합니다. 양식 제출 조치가 트리거되면, 방지 기술은 지정된 시간 내에 새로 제출 트리거가 없을 때만 제출 작업이 수행 될 수 있도록 타이머를 설정합니다. 타이머 기간 동안 제출 버튼을 다시 클릭하면 타이머가 재설정되므로 반복적 인 제출을 피합니다.
다음으로, 우리는 구체적인 예제를 사용하여 PHP에서 셰이크 방지 기술을 구현하는 방법을 보여줍니다. 이름과 사서함 필드가 포함 된 사용자 등록 양식이 있다고 가정합니다. 사용자가 양식을 제출 한 후에는 데이터를 데이터베이스에 저장해야합니다. 양식을 제출할 때 버튼의 빈번한 클릭으로 인해 사용자가 반복적으로 제출하지 않도록하기 위해 양식을 제출할 때 셰이크 방지 기술을 사용할 수 있습니다.
<?php // 데이터베이스에 연결하십시오 $mysqli = new mysqli("localhost", "username", "password", "database"); // 연결이 성공했는지 확인하십시오 if ($mysqli-> connect_error) { 다이 ( "연결 실패 :". $ mysqli-> connect_error); } // 게시물 데이터를 가져옵니다 $ name = $ _post [ 'name']; $ email = $ _post [ '이메일']; // 레코드가 이미 존재하는지 확인하십시오 $ query = "select * name = '$ name'및 이메일 = '$ email'"; $ result = $ mysqli-> query ($ query); if ($ result-> num_rows> 0) { 에코 "레코드는 이미 존재한다"; } 또 다른 { // 새 레코드 삽입 $ insert = "사용자에 삽입 (이름, 이메일) 값 ( '$ name', '$ email')"; $ mysqli-> query ($ insert); Echo "레코드 저장을 성공적으로 저장하십시오"; } // 데이터베이스 연결을 닫습니다 $ mysqli-> close (); ?>
<form id="myForm" action="form_submit.php" method="POST"> <input type="text" name="name" required> <input type="email" name="email" required> <button type="submit" id="submitButton">제출하다</button> </form> <script> var form = document.getElementById("myForm"); var submitButton = document.getElementById("submitButton"); var debounceTimer = null; form.addEventListener("submit", function(e) { e.preventDefault(); // 기본 제출 동작을 취소하십시오 if (debounceTimer) { clearTimeout(debounceTimer); } debounceTimer = setTimeout(function() { form.submit(); // 양식 제출 지연 }, 1000); // 지연 시간이 설정됩니다1두번째 }); </script>
PHP와 JavaScript의 조합을 통해 양식의 반복 제출을 효과적으로 피하고 데이터의 정확성과 프로그램의 정상 작동을 보장 할 수 있습니다. 이 셰이크 방지 기술은 사용자 경험을 향상시킬뿐만 아니라 오해로 인한 오류를 줄입니다.