PHP の Post-Redirect-Get (PRG) パターン: フォーム再送信保護の実現
Web アプリケーションの設計時にフォームの再送信を防止するページのリロード後または戻るボタンのアクションにより、ユーザー エクスペリエンスが向上し、データの整合性が維持されます。 Post-Redirect-Get (PRG) パターンは、この問題に対処するためのアプローチとして広く認識されていますが、簡単な PHP 実装を見つけるのは難しい場合があります。
PHP で PRG パターンを示す簡略化された例を次に示します。
<?php if ($_POST) { // Validate input if (/* Input is valid */) { // Execute code (such as database updates) here. // Redirect to this page. header("Location: {$_SERVER['REQUEST_URI']}", true, 303); exit(); } } ?> <html> <!-- Your HTML page with a form --> </html>
この例では、フォームが POST 経由で送信されると、入力が検証されます。入力が有効な場合、データベースの更新などのコードが実行されます。その後、スクリプトは Location ヘッダーを使用してユーザーを同じページにリダイレクトします。 303 See Other ステータス コードは、リクエストを GET 経由で繰り返す必要があることを示し、フォームの再送信を効果的に防止します。
$_SERVER['REQUEST_URI'] を使用することで、この例では、CMS システムおよびフレームワークの PHP_SELF に関する潜在的な問題を回避します。 exit() 関数は、リダイレクト以下の HTML コードの実行を防ぐために呼び出されます。
この PRG 実装は、コードの複雑さを最小限に抑えながら、フォームの再送信に対する保護を提供します。このパターンを採用することで、Web アプリケーションの堅牢性とユーザー エクスペリエンスを向上させることができます。
以上がPost-Redirect-Get (PRG) パターンはどのように PHP でのフォームの再送信を防ぐことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。