重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送信の問題が発生する可能性があるアプリケーション シナリオは多数あります。たとえば、次のようになります。 [送信] ボタンを 2 回クリックします。 「更新」ボタンをクリックします。 ブラウザの戻るボタンを使用して前の操作を繰り返すと、フォームの送信が重複して発生します。 ブラウザの履歴を使用して、フォームを繰り返し送信します。 ブラウザは HTTP リクエストを繰り返します。 フォームの重複送信を防ぐいくつかの方法 1. 送信ボタンを無効にします。フォームが送信された後に送信ボタンを無効にするには、Javascript を使用します。このアプローチにより、せっかちなユーザーがボタンを複数回クリックするのを防ぐことができます。しかし、問題があります。クライアントが Javascript を無効にしている場合、このメソッドは無効になります。 前回の記事で、いくつかの Jquery プラグインを使用すると良い効果が得られる可能性があると述べました。 2.Post/Redirect/Getモード。送信後にページ リダイレクトを実行することを、Post-Redirect-Get (PRG) パターンと呼びます。つまり、ユーザーがフォームを送信すると、送信成功情報ページへのクライアント側リダイレクトが実行されます。 これにより、ユーザーが F5 キーを押すことで発生する繰り返しの送信を回避でき、ブラウザー フォームを繰り返し送信しても警告が表示されなくなります。また、ブラウザーの進むボタンと戻るボタンを押すことで発生する同じ問題も解消されます。 3. セッションに特別なフラグを保存します。フォーム ページが要求されると、特殊な文字列が生成され、セッションに保存され、フォームの隠しフィールドに配置されます。フォーム データを受け入れて処理するときに、識別文字列が存在するかどうかを確認し、すぐにセッションから削除してから、データを通常どおり処理します。 フォーム送信に有効なフラグ文字列がないことが判明した場合、フォームは送信されており、送信は無視されることを意味します。 これにより、Web アプリケーションにさらに高度なレベルの XSRF 保護が提供されます。 4. データベースに制約を追加します。データの重複を防ぐには、データベースに一意の制約を追加するか、一意のインデックスを作成します。これは、データの重複送信を防ぐ最も効果的な方法です。 以上が4つの方法の紹介です。より良い解決策があればぜひ教えてください。この記事は今後も更新されていきます。 |
<<: IE6、IE7、IE8 で CSS3 の丸い角と影のスタイルをサポートする
>>: 親要素に対する CSS 子要素の固定配置ソリューションの詳細な説明
目次タイプ判定から始める厳格な平等エラーファーストと約束デバッグと出力タイプ判定から始めるJavaS...
カリで再現まず、必要なvim.basicファイルにsuid権限を設定します。 chmod u+s /...
カルーセルとは何ですか?カルーセル: モジュールまたはウィンドウで、コンピューターでマウスをクリック...
または、インストールプロセスを自分で書き留めてください。私のサーバーシステムはAliyun Linu...
目次1. 基本2. ノード、ツリー、仮想DOM 1. 仮想DOM 3. createElementパ...
このステータス コードは、リクエストのステータスに関する情報を提供し、サイトとリクエストされたページ...
nginx で proxy_pass を設定するときに、^~ に従ってパスを一致させる場合は、pro...
仕事上の理由により、完全なオンライン化(つまり、すべてのデータがオンラインで完了し、インポートや...
目次1. gojsの紹介2. Gojsのアプリケーションシナリオ3. gojs を選ぶ理由: 4. ...
最近のプロジェクトでは、多くのフォーム、特にチェックボックスとラジオボタンの作成が含まれます。しかし...
最近のプロジェクトでフォームを作成するときに、コメント ボックスまで自動的にスクロールし、コメント ...
序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...
mysql5.7.21の簡単なインストール構成は次のとおりです。 1. MySQLのインストール1....
HTML チェックボックスとラジオボタンスタイルの美化の簡単な例チェックボックス: XML/HTML...
目次1. 開発環境2. dockerプラグインをインストールする1. アイデアのインストール2. イ...