의도하지 않은 양식 재제출 방지
페이지 새로 고침으로 인한 양식 재제출은 웹 애플리케이션에서 흔히 발생하는 문제입니다. 이 문제를 효과적으로 처리하려면 다음 전략을 사용하는 것이 중요합니다.
제출 후 리디렉션
동일한 페이지에 응답을 표시하는 대신 사용자를 양식이 제출되면 별도의 페이지로 이동합니다. 이렇게 하면 새로 고친 페이지가 로드될 때 이미 처리된 POST 요청이 반복되지 않고 새로운 GET 요청이 됩니다.
예:
// submit // set success flash message (you are using a framework, right?) header('Location: /path/to/record'); exit;
브라우저 캐싱 비활성화
브라우저가 양식을 캐싱하는 것을 방지하려면, PHP 스크립트에 다음 헤더를 추가하세요.
header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache');
고유 페이지 토큰
각 양식 제출에 대해 서버에 고유 토큰을 생성합니다. 이 토큰을 양식의 숨겨진 필드로 포함하고 처리하기 전에 확인하세요. 토큰이 일치하지 않거나 누락된 경우 중복 제출로 요청을 삭제합니다.
예(세션 토큰 포함):
<?php session_start(); // Generate a unique token and store it in the session $token = md5(uniqid(mt_rand(), true)); $_SESSION['token'] = $token; ?> <!DOCTYPE html> <html> <body> <form action="submit.php" method="post"> <input type="text" name="name"> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="Submit"> </form> </body> </html>
<?php session_start(); // Get the submitted token $token = $_POST['token']; // Check if the token matches the session token if ($token != $_SESSION['token']) { // Discard the request } else { // Process the form data }
결론
이러한 기술을 구현하면 원치 않는 형식을 효과적으로 방지할 수 있습니다. 페이지 새로 고침으로 인한 재제출을 방지하고 웹 애플리케이션이 의도한 대로 작동하는지 확인하세요.
위 내용은 웹 응용 프로그램에서 의도하지 않은 양식 다시 제출을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!