python - 如何防止狂点提交表单按钮导致的数据重复?
高洛峰
高洛峰 2017-04-18 10:05:45
0
12
1505
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信 (12)
洪涛

送信が失敗した場合は、ボタンをクリックした直後にボタンを無効にします。失敗した場合は、成功ページにリダイレクトされます。

またはクリックすると、マスクがポップアップ表示されます。

ただし、上記の解決策はどちらも js が必要です。なぜjsを使いたくないのでしょうか?

いいねを押す+0
    迷茫

    1.JS ボタンは繰り返しクリックを防ぎます

    2. サーバー側のキャッシュ制御、ライブラリを繰り返し書き込む方法です

    3. データベース内に一意のインデックスを作成します (たとえば、投稿のタイトルは一意であり、重複することはできません)

    いいねを押す+0
      阿神

      フロントエンドとバックエンドから制御可能:

      • ユーザーが投稿をクリックすると、[投稿] ボタンを無効にします

      • 投稿リクエストが送信されたときに、その人が同じタイトルと内容の投稿を送信したかどうかを確認し、送信した場合、この重複投稿の作成を禁止します。

      いいねを押す+0
        迷茫

        テンプレートのレンダリング時に ID を生成し、送信時に ID を一緒に送信してバックエンドと比較することができます。これにより、渡された ID が間違っている場合、処理が無視されます。

        いいねを押す+0
          PHPzhong

          まず、より簡単な解決策は、デバウンス関数を使用して DOM コールバック トリガーの頻度を制限することです。

          第二に、この時代でもユーザーが JS を無効にする状況を考慮する必要がある場合は、フロントエンドでそれを行わないでください。

          いいねを押す+0
            洪涛

            この問題は、フロントエンドだけに頼って解決することはできません。

            1. キャッシュを追加し、単一マシンにはマップを使用し、分散キャッシュには Redis を使用します。

            2. Mysql のストアド プロシージャを使用して、同時実行の圧力をデータベースに引き渡します

            3. ロック、楽観的ロックまたは悲観的ロック

            4. 一意のキー

            いいねを押す+0
              刘奇

              現在のページは、送信時に一意の ID を生成します。たとえば、laravelのフォーム送信ページにはcsrf_token

              が含まれます。
              いいねを押す+0
                刘奇

                次に、独自のcsrfを作成し、コンテンツを送信するときにキーを自動的に生成します。それらが同じである場合は、キーをリセットします。単なる重複送信

                いいねを押す+0
                  迷茫

                  フォームフォームは、非表示フィールドのランダムな文字列を過ぎてポストし、セッションに入れます
                  プログラムがこのランダムな文字列を受け取り、セッション内の文字列と比較し、同じであれば送信し、そうでない場合は送信します。同じではありません。このセッションをリセットしてください

                  だけでエラー比較が求められます。
                  いいねを押す+0
                    Ty80

                    1. JS 検証、送信後に送信ボタンを無効にする
                    2. サーバー側の検証、ページが更新されるたびに、サーバーにデータを送信するときにページ内にトークンが生成されます。トークンが有効かどうかを判断し、その後データが処理されてトークンが破棄されますが、フロントエンドが繰り返し送信すると、トークンが破棄されるため確実に処理されません。

                    いいねを押す+0
                      最新のダウンロード
                      詳細>
                      ウェブエフェクト
                      公式サイト
                      サイト素材
                      フロントエンドテンプレート
                      私たちについて 免責事項 Sitemap
                      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!