PHP を使用した複数のフォーム送信の防止
Web 開発では、ユーザーが送信を繰り返しクリックしたときに複数のフォーム送信を防ぐことが不可欠です。ボタン。これにより、データエントリの重複や予期しない動作など、意図しない結果が生じる可能性があります。 PHP では、この問題を防ぐためのいくつかの手法が提供されています。
効果的なアプローチの 1 つは、固有のフォーム トークンを利用することです。フォームが表示されると、一意のトークンが生成され、セッションに保存されます。フォームが送信されると、トークンが保存されているバージョンと照合されます。トークンが一致すると、フォームの送信が処理されます。そうでない場合、送信は拒否され、複数の送信が防止されます。
簡単な PHP 実装は次のとおりです:
session_start(); function getToken() { $token = sha1(mt_rand()); if (!isset($_SESSION['tokens'])) { $_SESSION['tokens'] = array($token => 1); } else { $_SESSION['tokens'][$token] = 1; } return $token; } function isTokenValid($token) { if (!empty($_SESSION['tokens'][$token])) { unset($_SESSION['tokens'][$token]); return true; } return false; } $postedToken = filter_input(INPUT_POST, 'token'); if (!empty($postedToken)) { if (isTokenValid($postedToken)) { // Process form } else { // Handle error } } $token = getToken();
<form method="post"> <fieldset> <input type="hidden" name="token" value="<?php echo $token; ?>" /> <!-- Add form content --> </fieldset> </form>
セキュリティを強化するには、このトークン検証とリダイレクトを組み合わせます。フォームの送信について。これにより、ユーザーが戻るボタンを押したときに、新しいフォームが新しいトークンで表示されます。 POST / リダイレクト / GET として知られるこのパターンは、複数の送信をさらに防止し、下位互換性と上位互換性を維持します。
以上がPHP で複数のフォーム送信を防ぐには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。