페이지를 새로 고칠 때 양식 다시 제출을 방지하는 방법(F5/CTRL+R)
P粉151466081
2023-08-29 11:37:35
<p>SQL 테이블에 텍스트를 제출하는 간단한 양식이 있습니다. 문제는 사용자가 텍스트를 제출한 후 양식을 다시 작성하지 않고도 페이지를 새로 고치고 데이터를 다시 제출할 수 있다는 것입니다. 텍스트를 제출한 후 사용자를 다른 페이지로 리디렉션할 수 있지만 사용자가 같은 페이지에 머물기를 원합니다. </p>
<p>각 사용자에게 고유한 세션 ID를 부여하고 이를 다른 값과 비교하여 제가 겪고 있던 문제를 해결했다는 내용을 읽은 기억이 나지만 그 위치를 잊어버렸습니다. </p>
또한 JavaScript 메서드를 사용하여
으아악window.history.replaceState
새로고침 및 뒤로 버튼을 눌러 다시 제출하는 것을 방지할 수 있다는 점을 지적하고 싶습니다.개념 증명: https://dtbaker.net/files/ Prevent-post-resubmit.php(링크가 더 이상 유효하지 않음)저는 여전히 Post/Redirect/Get 메소드를 권장하지만 이것은 참신한 JS 솔루션입니다.
게시/리디렉션/가져오기 패턴을 사용하세요. http://en.wikipedia.org/wiki/Post/Redirect/Get
내 웹사이트에서는 메시지를 쿠키나 세션에 저장하고 게시 후 리디렉션하고 쿠키/세션을 읽은 다음 해당 세션이나 쿠키 변수의 값을 지웁니다.