현재 위치: > 최신 기사 목록> PHP 양식의 반복 제출을 방지하는 방법 : 실제 솔루션

PHP 양식의 반복 제출을 방지하는 방법 : 실제 솔루션

gitbox 2025-06-18

1. 문제 배경

웹 응용 프로그램 개발에서 양식은 사용자가 시스템과 상호 작용하는 중요한 방법입니다. 그러나 사용자는 때때로 양식을 여러 번 제출하여 데이터 복제로 이어질뿐만 아니라 시스템 성능 및 데이터 일관성에도 영향을 줄 수 있습니다.

2. 솔루션

사용자의 양식을 반복적으로 제출하지 않기 위해 다음과 같은 효과적인 솔루션을 채택 할 수 있습니다.

2.1 제출 버튼을 비활성화합니다

사용자가 제출 버튼을 여러 번 클릭하지 못하도록 JavaScript 코드를 통해 제출 버튼을 비활성화합니다. 다음은 관련 샘플 코드입니다.

 
document.getElementById("submitBtn").disabled = true;
        

2.2 고유 식별자를 생성합니다

양식이로드되면 고유 식별자가 세션이나 쿠키에 생성되어 저장됩니다. 양식을 제출할 때 식별자를 함께 제출하고 서버 측에 식별자가 존재하는지 확인하십시오. 존재한다면 반복 제출임을 의미합니다. 샘플 코드는 다음과 같습니다.

 
// 고유 식별자를 생성합니다
$token = md5(uniqid(rand(), true));
// 식별자를 저장하십시오session또는cookie가운데
$_SESSION['form_token'] = $token;
// 在表单가운데添加隐藏字段来存储标识符
echo "<input type='hidden' name='form_token' value='{$token}'>";
        

서버 측의 제출을 ​​확인할 때 제출 된 식별자가 저장된 식별자와 일치하는지 비교하십시오.

 
// 제출 된 식별자를 받으십시오
$submittedToken = $_POST['form_token'];
// 저장된 식별자를 가져옵니다
$storedToken = $_SESSION['form_token'];
// 두 식별자가 일관된 지 비교하십시오
if ($submittedToken === $storedToken) {
    // 양식 제출 처리를 실행하십시오
    unset($_SESSION['form_token']);
} else {
    echo "양식을 반복적으로 제출하지 마십시오";
}
        

2.3 페이지 리디렉션

양식을 제출 한 후 서버는 사용자를 다른 페이지 (예 : 성공적인 페이지 제출 페이지)로 리디렉션 할 수 있습니다. 이런 식으로 사용자가 페이지를 새로 고치거나 커밋 페이지로 돌아가더라도 서버는 새로운 커밋으로 취급되므로 중복 커밋을 방지합니다. 샘플 코드는 다음과 같습니다.

 
// 처리 양식 제출 로직
header("Location: success.php");
exit;
        

페이지를 리디렉션 할 때 양식이 성공적으로 제출되었음을 사용자에게 알리기 위해 적절한 신속한 정보를 제공해야합니다.

2.4 서버 측 기술 사용

프론트 엔드 솔루션 외에도 서버 측 기술을 사용하여 반복적 인 양식 제출을 방지 할 수도 있습니다. 예를 들어, 데이터베이스는 각 커밋에 대한 레코드를 저장하고 커밋의 독창성을 확인하는 데 사용될 수 있습니다.

3. 요약

사용자가 양식을 반복적으로 제출하는 것을 방지하는 것은 웹 개발에서 중요한 문제입니다. 이 문제는 제출 버튼을 비활성화하고 고유 식별자, 페이지 리디렉션 및 서버 측 확인을 생성하여 효과적으로 해결할 수 있습니다. 특정 요구에 따라 적절한 솔루션을 선택하고 사용자 경험을 최적화하십시오.