phpでフォームが何度も送信される問題を解決する方法の紹介
繰り返し送信は、開発中によく遭遇する問題です。js を使用してフォームの繰り返し送信を防ぐだけでなく、php を使用して繰り返し送信を防ぐこともできます。
例1
コードは以下の通りです
。
/*
* phpでフォームの繰り返し送信を防ぐ方法
*/
session_start();
if (empty($_SESSION['ip'])) {//最初の書き込み操作では、データベースに書き込むかどうかを知るために、IP アドレスが記録されているかどうかを判断します
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'] //最初に書き込み、その後のリフレッシュまたはリトリートの決定への道を切り開く
//..........//データベースへの書き込み操作
} else {//最初の書き込み後に操作が行われたため、データベースには書き込まれなくなります
echo 'リフレッシュせずにもう一度戻ってください' //すでに書かれたプロンプトやその他のものを書きます
;}
?>
具体的な原則
これを防ぐためのセッションスコープ変数トークン。
1. オープンセッション:
session_start();
2.フォーム送信がある場合
コードは以下の通りです
。if (isset($token))
トークンは非表示形式でフォームに含まれます。
コードは以下の通りです
。
3. フォームが繰り返し送信された場合
コードは以下の通りです
。1.if ($_SESSION["token"] != $token) {
2. // 重複した送信は許可されず、ここで処理されます
3. // header("location:".$_SERVER['PHP_SELF']);
4.} else {
5. //通常のフォーム送信はここで処理されます
6. // echo "送信済み";
7.}
4. トークン値を設定します
コードは以下の通りです
。1.$token = mt_rand(0,1000000);
2.$_SESSION['token'] = $token;
PHPでフォームが何度も送信される問題を解決する方法の紹介
------解決策---------------------
通常の状況では、ユーザーは 2 回目の送信を許可されるべきですか?
------解決策---------------------
実際にはそんなことはしていない
成熟したプロジェクトは通常、ビューを分離し、ルーティングを通じて転送するため、このようなことは起こりません!
。