重複|重複送信
「重複送信」の問題に遭遇したことはありますか?この問題を解決するのは難しくありません。同じフォームの重複送信を避ける簡単な方法を次に示します。
まず、フォームの送信シーケンス番号を保存するセッション変数を定義できます。ここでは「$userLastAction」として定義します。次に、フォームに隠し変数を追加し、値を $userLastAction+1 に設定します。
> 最後に、送信を処理する前に、フォームが送信されたかどうかを判断します:
if($lastAction>$userLastAction and inputIsValid(...)){
$userLastAction++; // シーケンス番号に 1 を追加します
// フォーム データを処理します
}
元のテキスト:
複数のフォーム送信を避ける
投稿者: Douglas E. Cook
日付: 07/26/00 19:46
あなたのデータベースは「重複投稿」症候群に悩まされていますか? 治療法はそれほど難しくありません。ユーザーが同じフォームを複数回送信できないようにします。
まず、各フォームのシリアル番号を保存するセッション変数を宣言します。次に、重複した送信が問題になるすべてのフォームに、非表示の変数を含めます。フィールドに値を設定し、値を $userLastAction+1 に設定します:
> 最後に、フォームが以前に作成されていないことを確認します。送信に基づいて動作する前に送信されます:
if($lastAction>$userLastAction and inputIsValid(...)){
$userLastAction++; // シリアル番号をインクリメントします
// ここでフォームに基づいて動作します
}
翻訳元: phpbuilder
これは、フォームの重複送信を避けるための単なるヒントです。これにより、一部のフラッディングを防ぐことができます。さらに、ネットワーク状況やその他の理由により、ユーザーが送信が成功したかどうかがわからず、同じフォームを再度送信することがあります。
この手法の主な原則は、ユーザーが復帰後に再送信できないことです。つまり、復帰後の変更と再送信は許可されておらず、Ctrl-C/Ctrl-V の灌漑方法は避けられません。役に立つかどうかはウェブマスターの好みによって決まります。