インターネットの開発により、Form SubmissionはWebアプリケーションで不可欠な機能になりました。ただし、フォームの提出を繰り返すと、ネットワークの遅延やユーザーの誤術により、データエラーまたはプログラムの例外が発生する可能性があります。この問題を解決するために、PHPアンチシェイクテクノロジーは、フォームの提出の正確性を確保し、繰り返しの提出を避けることができます。
アンチシェイクテクノロジーは、操作の頻度を制御するテクノロジーであり、指定された時間間隔内で操作が1回のみ実行されるようにします。フォーム送信アクションがトリガーされると、アンチシェイクテクノロジーはタイマーを設定して、指定された時間内に新しい提出トリガーがない場合にのみ提出操作が実行されるようにします。タイマー期間中に[送信]ボタンが再度クリックされた場合、タイマーはリセットされ、繰り返しの提出物が回避されます。
次に、具体的な例を使用して、PHPでアンチシェイクテクノロジーを実装する方法を示します。名前とメールボックスフィールドを含むユーザー登録フォームがあるとします。ユーザーがフォームを送信すると、データをデータベースに保存する必要があります。フォームを送信するときに頻繁にボタンをクリックするためにユーザーが繰り返し送信しないようにするために、フォームを送信するときにアンチシェイクテクノロジーを使用できます。
<?php // データベースに接続します $mysqli = new mysqli("localhost", "username", "password", "database"); // 接続が成功しているかどうかを確認してください if ($mysqli-> connect_error){ die( "接続失敗:"。$ mysqli-> connect_error); } // post data $ name = $ _post ['name']; $ email = $ _post ['email']; //レコードが今それに存在するするかどうかを確認します$ query = "select * fromユーザー= '$ name'およびemail = '$ email'"; $ result = $ mysqli-> query($ query); if($ result-> num_rows> 0){ エコー「レコードはすでに存在するします」; } それ以外 { //新しいしいレコードを挿入$挿入= "ユーザー(名前、電子メール)値( '$ name'、 '$ email')"; $ mysqli-> query($ insert); エコー「レコードは普通に保存されます」; } //データベース接続を近いじる$ mysqli-> close(); ?>
<form id="myForm" action="form_submit.php" method="POST"> <input type="text" name="name" required> <input type="email" name="email" required> <button type="submit" id="submitButton">提案しますする</button> </form> <script> var form = document.getElementById("myForm"); var submitButton = document.getElementById("submitButton"); var debounceTimer = null; form.addEventListener("submit", function(e) { e.preventDefault(); // デフォルトの送信動作をキャンセルします if (debounceTimer) { clearTimeout(debounceTimer); } debounceTimer = setTimeout(function() { form.submit(); // フォームの遅延提出 }, 1000); // 遅延時間はに設定されています12番 }); </script>
PHPとJavaScriptの組み合わせにより、フォームの繰り返しの提出を効果的に回避し、データの正確性とプログラムの通常の操作を確保できます。このアンチシェイクテクノロジーは、ユーザーエクスペリエンスを改善するだけでなく、誤動作によって引き起こされるエラーを減らします。