php はフォームの繰り返しの送信を防ぎ、php はフォームの送信を防ぎます
ユーザーがフォームを送信すると、ネットワーク速度のせいで同じレコードがデータベースに繰り返し挿入される可能性があり、Web ページが悪意を持って更新される可能性があり、これはより困難です問題。同じフォームを繰り返し送信することを避けるために、クライアント側とサーバー側から同時に開始することができます。
1.クライアントスクリプトの使用
[php] プレーンコピーを表示
-
"cont" value="Submit" type="button" onClick=
"document.register.cont.value='送信中です。しばらくお待ちください...';document.register.cont 。無効=true;document.the_form.submit();">
-
フォーム>
ユーザーが「送信」ボタンをクリックすると、ボタンは灰色になり使用できなくなります。
上記の例では、OnClick イベントを使用してユーザーの送信ステータスを検出します。「送信」ボタンがクリックされると、ボタンはすぐに設定されます。無効な状態になると、ユーザーはボタンをクリックして再度送信できなくなります。 - これも JavaScript の関数を使用する方法がありますが、フォームが一度送信されると、すぐにダイアログ ボックスが表示されます。コードは次のとおりです。
[php]
プレーンコピーを表示
<スクリプト言語=
"javascript">
var submitcount=0;
関数 submitOnce (フォーム){
- if (submitcount == 0){
C 送信数 ++;
trueを返します。
- } 他{
- アラート(「動作中です。再度送信しないでください。ありがとうございます!」);
-
}
} -
スクリプト>
- <フォーム名="the_form" メソッド="投稿" アクション=
"" onSubmit=- "return submitOnce(this)">
<入力名="テキスト" タイプ=
"テキスト" id=- "テキスト" />
-
<入力名="続き" 値=
"送信" タイプ=- "送信">
-
-
フォーム>
-
上記の例では、ユーザーが「送信」ボタンをクリックすると、スクリプトは現在のステータスを自動的に記録し、submitcount 変数を 1 ずつ増やします。ユーザーが再度送信しようとすると、スクリプトは submitcount 変数が値がゼロ以外の場合、フォームの繰り返しの送信を避けるために、フォームが送信されたことをユーザーに通知します。 2.セッションを利用する(JSPの処理方法と同じです)
- PHPのSession関数を利用することで、フォームの重複送信を回避することもできます。セッションはサーバー側に保存され、次回この変数にアクセスすると、セッション変数を使用して送信された値を記録できます。フォームに一致しない場合は、繰り返し送信しているユーザーとみなされます。 ページAのコード: [php] プレーンコピーを表示
-
_Session_start ();
- // 現在のセッションに従って乱数を生成します
$code = mt_rand(0,1000000);
- $_SESSION['code'] = $code;
//この乱数をセッションに一時的に保存します - ?>
"form1" method=- "post" action=
"t2.php">
-
説明"text" name="title" />
"hidden" name="originator" value="">
&lt; p&gt;&lt; input type = "submit" name = "submit" value = "submit"/&gt;&lt;/p&gt;
フォーム>
Bページ:
[php] プレーンコピーを表示
セッション開始();
if(isset($_POST['発信者'])) {
if(
$_POST['発信者'] == $_SESSION['コード']){
-
-
-
️エコーあり
(Unset (n $ _Session [ "code"]; // この時点でクリアしてから、f5 を押します
}他{
- エコー 「このページを更新したり、フォームを繰り返し送信しないでください。」;
}
}?>
http://www.bkjia.com/PHPjc/1040165.html- www.bkjia.comtrue
http://www.bkjia.com/PHPjc/1040165.html- 技術記事