2009-09-29 4 views
1

내가 찾는데 도움이되는 http 프로토콜에있는 것이거나 직접 필드를 확인해야합니까?양식이 두 번 제출된다는 사실을 어떻게 알 수 있습니까?

동일한 필드 값을 두 번 이상 제출할 수 있다면 더미 숨겨진 필드 나 다른 것을 추가해야합니까?

+0

무엇을하려고합니까? – UpTheCreek

+0

나는 그가 사용자가 페이지를 새로 고침 할 때 이전 포스트 백 액션을 피하려고 노력하고 있다고 생각한다. – rahul

답변

3

당신이 형태의 숨겨진 필드에서 양식에 대한 고유 ID를 포함해야하고, 데이터에 대해 그것을 확인해 보겠습니다 완전히 확인하려면 양식 데이터를 처리하기 전에 모든 서버 스레드 (예 : db)를 볼 수 있습니다.

0

이렇게 할 수있는 한 가지 방법은 클릭 한 번 자바 스크립트를 사용하여 버튼을 사용 중지하는 것입니다. 또한 여러 제출 (또는 포스트 백)을 확인하는 서버 측 코드를 만들 수 있습니다. HTTP가 무국적이고 다중 제출에 대해 스스로 알지 못하기 때문에 HTTP 프로토콜에서 사용할 수있는 것이 없다고 생각합니다.

+0

자바 스크립트 아이디어에 감사드립니다. 그러나 게시물이 제출 된 후 사용자가 페이지를 다시로드하면이 작업이 도움이되지 않습니까? – flybywire

+0

글쎄, 작은 스크립트를 작성하여 사용자 새로 고침 상태를 확인할 수있는 경우. 마찬가지로, 세션이 현재보고있는 현재 페이지를 저장하는 세션 variale를 만들 수 있습니다. 그리고 그것에 근거한 수표를 줄 수 있습니다. – Bhaskar

0

나는 http에서 가능하다고 생각하지 않는다. 당신은 필드의 해시를 계산하고 자바 스크립트에서 확인할 수 있습니다.

편집 당신은 쿠키에 저장할 수 있습니다

0

이 문제를 피하는 한 가지 방법은 다시 게시 작업 발생 후 같은 페이지로 리디렉션하는 것입니다. 그러나 이렇게하면 ViewState에 저장된 모든 값이 지워집니다.

다음은 서버 또는 모두에서이 주제

Build your ASP.NET Pages on a Richer Bedrock

0

당신은 클라이언트의 문제를 해결할 수 있습니다에 대한 좋은 기사입니다.

클라이언트 측 제출 버튼을 비활성화하거나, 경고 상자를 표시하거나, 사용자를 리디렉션 할 수 있습니다. this article을보십시오.

서버 측에서는 세션을 사용하여 각 방문자가 한 번만 제출할 수 있습니다.

0

일반적으로 데이터를 저장/변경하지 않는 한 추가로드/제출에 대해 걱정할 필요가 없습니다. 결과적으로 데이터 수정 논리에 강력한 제어 기능을 넣었습니다. 데이터를로드 할 때 해당 데이터의 마지막 변경 날짜 및 시간을 반환합니다. 저장시 기존 데이터의 마지막 변경 날짜가 정확히 일치하는지 확인합니다. 두 번째 저장/변경은 중단됩니다. 왜냐하면 첫 번째 저장이이 마지막 변경 날짜를 변경하여 변경되기 때문입니다. 초기 저장 (INSERT)의 경우 마지막 X 시간 내에 사용자에 대해 작성된 새 항목이 없는지 확인하기 위해 논리를 추가 할 수 있습니다.

관련 문제