>  기사  >  웹 프론트엔드  >  사용자가 양식을 반복적으로 제출하는 것을 방지하는 방법

사용자가 양식을 반복적으로 제출하는 것을 방지하는 방법

高洛峰
高洛峰원래의
2017-02-25 13:46:161214검색

중복 양식 제출은 다중 사용자 웹 애플리케이션에서 가장 흔히 발생하는 문제이며 많은 문제를 야기합니다. 다음과 같이 제출 문제가 반복적으로 발생하는 신청 시나리오가 많이 있습니다.

제출 버튼을 두 번 클릭하세요. 새로 고침 버튼을 클릭하세요. 브라우저의 뒤로 버튼을 사용하여 이전 작업을 반복하면 양식 제출이 반복됩니다. 브라우저 기록을 사용하여 양식을 반복적으로 제출합니다. 브라우저의 HTTP 요청을 복제합니다.

반복적인 양식 제출을 방지하는 여러 가지 방법

1. 제출 버튼을 비활성화합니다. 양식이 제출된 후 제출 버튼을 비활성화하려면 Javascript를 사용하십시오. 이 접근 방식은 참을성 없는 사용자가 버튼을 여러 번 클릭하는 것을 방지합니다. 하지만 클라이언트가 Javascript를 비활성화하면 문제가 발생합니다.

이전 기사에서 일부 Jquery 플러그인을 사용하면 효과가 있다고 말씀드렸습니다.

 2.게시/리디렉션/가져오기 모드. 제출 후 페이지 리디렉션을 수행하는 것은 소위 PRG(Post-Redirect-Get) 패턴입니다. 즉, 사용자가 양식을 제출하면 클라이언트 측 리디렉션을 수행하고 제출 성공 정보 페이지로 이동합니다.

이렇게 하면 사용자가 F5 키를 눌러 발생하는 반복 제출을 방지할 수 있으며 브라우저 양식의 반복 제출에 대한 경고도 표시되지 않으며 브라우저의 앞으로 및 뒤로 버튼을 눌러 발생하는 동일한 문제도 제거할 수 있습니다. .

 3. 세션에 특수 플래그를 저장합니다. 양식 페이지가 요청되면 특수 문자열이 생성되어 세션에 저장되고 양식의 숨겨진 필드에 배치됩니다. Form 데이터를 접수 및 처리할 때 식별문자열이 존재하는지 확인하고 즉시 세션에서 삭제한 후 정상적으로 데이터를 처리한다.

양식 제출에 유효한 플래그 문자열이 없는 것으로 확인되면 양식이 이미 제출되었으며 이 제출이 무시된다는 의미입니다.

이는 웹 애플리케이션에 더욱 향상된 XSRF 보호 기능을 제공합니다.

 4. 데이터베이스에 제약 조건을 추가합니다. 데이터 중복을 방지하려면 데이터베이스에 고유 제약 조건을 추가하거나 고유 인덱스를 생성하세요. 이는 데이터의 중복 제출을 방지하는 가장 효과적인 방법입니다.

위는 이 4가지 방법에 대한 소개입니다. 더 나은 해결책이 있으면 알려주세요. 이 글은 계속 업데이트될 예정입니다.

사용자가 양식을 반복적으로 제출하는 것을 방지하는 방법에 대한 자세한 내용을 보려면 PHP 중국어 웹사이트를 주목하세요!

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