ホームページ > バックエンド開発 > PHPチュートリアル > PHP で複数のフォーム送信を防ぐには?

PHP で複数のフォーム送信を防ぐには?

Barbara Streisand
リリース: 2024-11-09 14:26:02
オリジナル
659 人が閲覧しました

How to Prevent Multiple Form Submissions with PHP?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート