PHP はユーザーがフォームを繰り返し送信できないようにします
フォームを送信する際、無視できない制限の 1 つは、ユーザーが送信ボタンを連続してクリックしたり、攻撃者が悪意を持ってデータを送信したりする可能性があるため、ユーザーがフォームを繰り返し送信できないようにすることです。データベースにデータを変更または追加すると問題が発生するためです。
それでは、フォームが繰り返し送信される現象を回避するにはどうすればよいでしょうか?多くの側面から始めることができます:
まず、フロントエンドに制限を加えます。ボタンが 1 回クリックされると、フロントエンド JavaScript が無効になります。この方法は単に送信ボタンの複数回のクリックを防止するだけですが、ユーザーが JavaScript スクリプトを無効にすると機能しないという欠点があります。
2 番目に、送信後にページをリダイレクトできます。つまり、送信後に新しいページにジャンプできます。これにより、主に F5 キーの繰り返しの送信が回避されますが、欠点もあります。
第三に、データベースには一意のインデックス制約があります。
4 番目のステップは、セッション トークンを確認することです。
次に、セッション トークンを使用してフォームの繰り返し送信を防ぐ簡単な方法について学びましょう。
フォームに入力非表示フィールド、つまり type="hidden" を追加します。このフィールドの値は、ページが更新されたときにトークン値が変更されるかどうかを判断します。トークンの値が正しい場合 フロントデスクによって送信された場合 トークンが背景と一致しない場合、それは重複送信とみなされます。
< ?php /* * PHP简单利用token防止表单重复提交 */ session_start(); header("Content-Type: text/html;charset=utf-8"); function set_token() { $_SESSION['token'] = md5(microtime(true)); } function valid_token() { $return = $_REQUEST['token'] === $_SESSION['token'] ? true: false; set_token(); return $return; } //如果token为空则生成一个token if(!isset($_SESSION['token']) || $_SESSION['token']=='') { set_token(); } if(isset($_POST['web'])){ if(!valid_token()){ echo "token error,请不要重复提交!"; }else{ echo '成功提交,Value:'.$_POST['web']; } }else{ ?> <form method="post" action=""> <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>"> <input type="text" class="input" name="web" value="www.jb51.net"> <input type="submit" class="btn" value="提交" /> </form> <?php } ?>
上記は、フォームの重複送信を防ぐための簡単な例です。
その後、実際のプロジェクト開発では、フォーム トークンはより複雑に処理されます。これをトークン検証と呼びます。可能な加工
ソース ドメイン、つまりソースが外部送信であるかどうかを確認すること、実行されるアクション (追加、変更、削除) を照合すること、次に最も重要なことはトークンを構築することです。可逆暗号化アルゴリズムを使用します。
平文はまだ安全ではないため、できるだけ複雑にしてください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック







