ホームページ >バックエンド開発 >PHPチュートリアル >Post/Redirect/Get (PRG) はどのようにしてページ更新時の不要なフォームの再送信を防ぐことができますか?

Post/Redirect/Get (PRG) はどのようにしてページ更新時の不要なフォームの再送信を防ぐことができますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-27 09:22:10446ブラウズ

How Can Post/Redirect/Get (PRG) Prevent Unwanted Form Resubmissions on Page Refresh?

Post/Redirect/Get を使用したページ更新時のフォームの再送信の防止

この状況では、ページを更新すると意図しないフォームの再送信が発生します。 Post/Redirect/Get (PRG) パターンは効果的なソリューションを提供します。その実装を詳しく見てみましょう。

フォームが送信された後、サーバーは次のステップを実行します。

  1. 投稿: ブラウザはフォーム データをserver.
  2. リダイレクト: サーバーはデータを処理し、へのリダイレクトを発行します。別のページ。
  3. Get: ブラウザは新しいページを取得し、事実上フォーム データをクリアします。

フォーム送信後にユーザーをリダイレクトすることで、ブラウザの暗黙的なページ更新時の GET リクエストにはフォーム データが含まれていないため、再送信が妨げられます。

ただし、これを回避することが重要です。 [戻る] ボタンを使用すると、以前に送信されたデータがフォームに再入力される可能性があるためです。シームレスなユーザー エクスペリエンスを実現するには、データが正常に送信されたことを新しいページで明確に示すようにしてください。

window.history.replaceState を使用した Javascript アプローチ

As回答で述べたように、代替アプローチには、JavaScript の window.history.replaceState メソッドを利用することが含まれます:

if (window.history.replaceState) {
    window.history.replaceState(null, null, window.location.href);
}

Thisこのスクリプトはブラウザの履歴を変更し、ページの更新をトリガーせずに現在のエントリを新しいエントリに置き換えます。ただし、このアプローチは PRG パターンほど信頼性が低い可能性があることに注意することが重要です。

結局のところ、PRG パターンは、フォームの元の URL を維持し、フォームの再送信を防止しながら、ページ更新時のフォームの再送信を防ぐ堅牢なソリューションであり続けます。ユーザーフレンドリーなエクスペリエンス。

以上がPost/Redirect/Get (PRG) はどのようにしてページ更新時の不要なフォームの再送信を防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。