ホームページ >バックエンド開発 >PHPチュートリアル >PHP で複数のフォーム送信を防ぐ方法: 包括的なガイド

PHP で複数のフォーム送信を防ぐ方法: 包括的なガイド

Susan Sarandon
Susan Sarandonオリジナル
2024-11-15 05:52:02941ブラウズ

How to Prevent Multiple Form Submissions in PHP: A Comprehensive Guide

PHP での複数のフォーム送信の防止: 総合ガイド

Web アプリケーションでは複数のフォーム送信が問題となり、予期せぬ結果を招く可能性があります。この記事では、PHP での複数の送信を防ぐための詳細なソリューションを提供します。

トークンを使用したソリューション

PHP は、生成および保存できる固有のトークンを使用した堅牢なソリューションを提供します。セッション。実装方法は次のとおりです:

  1. トークンの生成: getToken() 関数を使用して、フォームに埋め込まれる一意のトークンを作成します。
  2. トークンの検証: フォームが送信されたら、次を使用して送信されたトークンの有効性を確認します。 isTokenValid($token) 関数。トークンが有効な場合は、再利用を防ぐために有効なトークンのリストから削除します。
  3. Display Form: getToken() を使用して現在のフォームのトークンを取得し、それを非表示として含めます。フォームに入力します。

コード例:

<?php
session_start();

function getToken(){
  $token = sha1(mt_rand());
  $_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) && isTokenValid($postedToken)){
  // Process Form
}

$token = getToken();
?>
<form method="post">
  <input type="hidden" name="token" value="<?php echo $token; ?>"/>
  <!-- Form Content -->
</form>

リダイレクトと下位互換性

適切な前後ナビゲーションを維持するには、POST/リダイレクト/GET パターンを実装することをお勧めします。これには以下が含まれます:

  1. トークンを使用してフォームを POST します。
  2. トークンの検証が成功したら、必要なアクションを実行し、ユーザーを新しいページにリダイレクトします。
  3. 使用ユーザーが「戻る」をクリックしたときにフォームが再送信されないように、リダイレクトされたページに対する GET リクエスト

これらの手順に従うことで、複数のフォーム送信を効果的に防止し、Web アプリケーションの整合性を確保できます。

以上がPHP で複数のフォーム送信を防ぐ方法: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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