2013-01-31 3 views
0

여기 제가 해결하려고 노력한 까다로운 질문입니다 ...뒤로 돌아가서 양식이 다시 전송됩니다.

모바일 웹 사이트에서 문제가 발생합니다. codeigniter를 사용하여 양식을 만들고 일부 값을 db에 전달한 다음 사용자가 보낸 기사로 사용자를 리디렉션합니다.

문제는 Android WebView (맞춤 앱)에서 다른 휴대 기기에서도 발생하기 때문에 사용자가 뒤로 버튼을 누르면 데이터를 다시 보내고 기사를 다시 게시합니다. 사용자가 아무런 경고없이 뒤로 버튼을 누를 때마다 기사가 게시됩니다.

제안 사항? 누군가이 문제가 있었습니까?

아, 그런데, 전체 역사가 지워지는 경우 (클라이언트 측과 자바 스크립트를 사용하지 않기 때문에 가능할지 모르겠다) 사용자가 뒤로 버튼을 친다면, 앱에서 꺼내 져야하는데, 나는 그것을 원하지 않는다.

+0

http://en.wikipedia.org/wiki/Post/Redirect/Get –

+0

참조 http://stackoverflow.com/questions/7747569/prevent-resubmit-form-after-click-back-button – hsan

답변

0

POST를 통해로드 된 페이지는 브라우저가 정보를 다시 제출하여 페이지를 보도록 요청하여 해당 페이지에서 수행 한 작업이 다시 발생하게합니다. 페이지가 GET을 통해 요청되고 쿼리 문자열에 변수가있는 경우 동일한 작업이 자동으로 수행됩니다 (사용자가 다시 입력하라는 메시지가 표시되지 않음).

이 문제를 해결하려면 POST/REDIRECT/GET pattern을 사용하는 것이 가장 좋습니다. 예를 들어 processing payments that I wrote for Authorize.Net에 사용했습니다. 바라기를 바라는 것은 당신을 올바른 방향으로 인도합니다.

0

이와 비슷한 문제 (이 문제는 전화에서도 마찬가지 임)를 해결합니다.

  1. 토큰 (15 자의 임의 문자열)을 생성하고 세션 [ '토큰'] 즉에 저장하십시오.

  2. 이 토큰을 HTML 양식의 숨겨진 입력에 저장하십시오.

  3. db를 만지기 전에 세션 토큰과 비교하여 일치하는 경우 세션 토큰을 진행하고 unset()합니다. 그렇지 않으면 오류 토큰이 일치하지 않습니다.

도움이 되길 바랍니다.

관련 문제