1. 送信ボタンを無効に設定します
ユーザーが送信すると、ボタンはすぐに無効になります。これはjsを使って実装されています。
代
コードを送信する前にコードをコピーしてください:
コードは次のとおりです
アイデア: ユーザーがボタンを送信すると、トークンが生成され (トークンはビジネス送信ごとに一意の値です)、セッションに保存され、有効期限が設定されます。ユーザーが再度送信するときに、トークンが一貫していて期限切れであるかどうかを確認します。一貫性があり、期限切れになっていない場合は、2 回送信されたとみなされます。プログラムの実行中にエラーが発生した場合、セッションに保存されている値をクリアする必要があります。手順は以下をご覧ください
return false;
false を返します。 S $ _Session ['token'] = $ token;
アイデア: ページがインストールされると、トークンが生成され、セッションに保存され、フォームに書き込まれます。フォームが送信されると、サーバーはセッションに保存されているトークンとトークンを比較し、ページが送信されると、セッションに保存されているトークンが破棄されます。 2 回目は、セッションに保存されたトークンが原因で、トークンが存在せず、エラーが報告されます。以下はコードです
$token を返す;
関数 checkToken($token) {
if (!isset($_SESSION['form_token']) || empty($_SESSION['form_token']) || $_SESSION['form_token'] != $token) {
return false; unset($_SESSION ['form_token']);
true を返します。
上記 3 つの方法をまとめましたが、個人的には、1 つ目と 2 つ目の方法を一緒に使用すると、より良い結果が得られると感じています。 2 番目の方法と 3 番目の方法 個人的には、3 番目の方法に利点があると感じます。
2 番目と 3 番目のメソッドはどちらもセッション内にトークンを書き込みます。このメソッドの利点はストレージ領域を節約できることですが、欠点は、セッションが書き込む前にページ全体をロードする必要があることです。また、ユーザーが送信を複数回クリックした場合でも、セッションがまだ書き込まれていないため、システムはそれが最初の入力であると認識する可能性があります。検証が機能しなくなります。幸いなことに、php 関数は素晴らしい機能を提供します。 session_write_close() を使用すると、ページのロードを待たずにすぐにセッションを書き込むことができます。同僚には、redis、memcache、データベースなど、セッションを保存するための多くのオプションもあります。
http://www.bkjia.com/PHPjc/825207.html
www.bkjia.com
true