検索

ホームページ  >  に質問  >  本文

python - 如何防止狂点提交表单按钮导致的数据重复?

高洛峰高洛峰2853日前1706

全員に返信(12)返信します

  • PHP中文网

    PHP中文网2017-04-18 10:07:45

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

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

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

    返事
    0
  • 迷茫

    迷茫2017-04-18 10:07:45

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

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

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

    返事
    0
  • 阿神

    阿神2017-04-18 10:07:45

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

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

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

      返事
      0
  • 迷茫

    迷茫2017-04-18 10:07:45

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

    返事
    0
  • PHPz

    PHPz2017-04-18 10:07:45

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

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

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:07:45

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

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

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

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

    4. 一意のキー

    返事
    0
  • 怪我咯

    怪我咯2017-04-18 10:07:45

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

    が含まれます。

    返事
    0
  • 怪我咯

    怪我咯2017-04-18 10:07:45

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

    返事
    0
  • 迷茫

    迷茫2017-04-18 10:07:45

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

    だけでエラー比較が求められます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:07:45

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

    返事
    0
  • キャンセル返事