문제

버튼이 포함 된 ASP.NET 페이지가 있습니다. 이 페이지에는 서버 사이드 페이팔 버튼이 포함되어 있습니다.

내 서버가 백엔드에서 다양한 영리한 작업을 수행 한 다음 응답을 양식으로 다시 작성 하고이 양식을 PayPal에 게시하는 일부 JavaScript를 다시 작성합니다.

이 모든 것이 잘 작동합니다.

그러나 사용자가 다시 클릭하기로 선택하면 생성 된 자체 포스트 양식에 도달하여 다시 PayPal로 전달됩니다.

역사상 생성 된 양식 페이지가 존재하지 않는 방법을 찾을 수 있다고 생각하면이 문제가 해결 될 것입니다. 그러나 나는 이것을 어떻게 바로 잡는 지 전혀 모른다.

내 페이지를 기록에서 제거하거나 결코 나타나지 않도록하려면 어떻게해야합니까?

업데이트 : 모두 덕분에 ... 좋은 답변입니다. 모든 좋은 것들을 발전 시켰지만 결정을 내리기 위해 쿠키보다는 숨겨진 필드를 영리하게 사용하기 때문에 Splattne과 함께 갔다.

도움이 되었습니까?

해결책

그것이 할 수 있는지 확실하지 않습니다. 그러나 다음은 어떻게 양식의 재 처리를 방해 할 수 있는지 아이디어입니다.

당신은 a를 삽입 할 수 있습니다 숨겨진 입력 처음에 비어있는 당신의 형태로. 제출시 해당 필드에 값을 작성 하고이 필드가 비어있는 경우 모든 제출 시도를 확인하십시오.

제출에 비어 있지 않으면 양식이 이전에 전송되었으며 사용자에게 경고 할 수 있음을 알 수 있습니다.

다른 팁

window.location.replace(URL);

Window.location:

교체 (URL)

현재 문서를 제공된 URL의 문서로 바꾸십시오. 할인 () 메소드와의 차이점은 대체 ()를 사용한 후 현재 페이지가 세션 기록에 저장되지 않으므로 사용자가 뒤로 버튼을 사용하여 탐색 할 수 없다는 것입니다.

웹 애플리케이션은 사용자의 브라우저를 완전히 제어 할 수 없습니다. 브라우저에 역사에 페이지를 저장하지 않도록 지시하는 방법이 있더라도 의심스럽게도 작동 할 수는 없습니다. 예를 들어, 영리한 사용자는 오픈 소스 브라우저를 조정하여 역사상 모든 페이지를 저장할 수 있습니다.

다른 각도에서 문제에 접근하려고 노력해야한다고 생각합니다. 예를 들어, 당신은 그것이 전달되는 것과 동일한 형식임을 감지하여 두 번째로 PayPal로 보내지 않을 수 있습니다. 중요한 것은 서버 측을하는 것입니다.

아마도 양식을 제출하기 전에 쿠키를 설정할 수 있습니다.

페이지가로드되면 해당 쿠키의 존재를 확인하십시오 (양식이 이미 제출 되었음). 발견 된 경우 양식을 자동으로 제출하는 대신 자동으로 돌아갑니다 (window.history.back()) 다시.

PayPal 통합으로 쉽게 할 수 있는지 확실하지 않지만"게시 / 리디렉션 / get" 패턴을 사용 하여이 문제를 해결할 수 있습니다

일부에 대한 유용한 힌트는 이것입니다 ...

window.history.go(-2);

특히 부하 고장 경고 팝업의 출현에서.

Window.referer가 두 번째로 호출하지 않으려는 PayPal 페이지 인 경우 페이지를 제출하지 않거나 다른 곳으로 이동하지 않도록 페이지를 프로그램 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top