ホームページ > バックエンド開発 > PHPチュートリアル > 改行が早すぎることによる重複送信の解決策

改行が早すぎることによる重複送信の解決策

WBOY
リリース: 2016-06-13 13:46:14
オリジナル
1083 人が閲覧しました

改行が早すぎるため、繰り返し送信されます
この問題の解決方法を教えてください。

1. 送信が完了した後、ブロックされ、SUBMIT が灰色になりますが、Enter キーを押しても送信されます


------解決策------ -php は繰り返し送信を防止します フォーム


解決策 1: Cookie メカニズムを導入して
を解決します 送信ページのコードは次のとおりです a.php コードは次のとおりです:
< ;form id="form1" name="form1" method= "post" action="t2.php">

説明






Setcookie("onlypost", 't'); // Cookie を設定します。時間値を取得できます。たとえば、一部のフォーラムでは、基本情報の一部を保存することでスパムを防止できます。
?> ページ b.php を処理するコードは次のとおりです。
if($_COOKIE['onlypost'] == 't'){
print_r($ _COOKIE);
// 検証が成功した場合、送信されたコンテンツを処理します
print "ok";
setcookie("onlypost", 'f') // Cookie の値を変更して削除することもできますit
} ?> ;
body
上記の処理の欠点: クライアントが Cookie を無効にしている場合、このメソッドは効果がありません。
解決策 2: セッションを使用する (JSP の処理方法と同じです)
PHP の Session 関数を使用すると、フォームの繰り返し送信を回避することもできます。セッションはサーバー側に保存され、次回この変数にアクセスすると、セッション変数を使用して送信された値を記録できます。フォームが一致しない場合は、繰り返し送信しているユーザーとみなされます。
ページ A のコード:
Session_start(); //現在の SESSION に基づいて乱数を生成します
$code = mt_rand(0,1000000);
$_SESSION [' code'] = $code; //この乱数をセッションに一時的に保存します
?>
;

説明







B ページ:
session_start()
if(isset($_POST['originator'] )) {
if($_POST['originator'] == $_SESSION['code']){
echo "ok";
unset($_SESSION["code"]); //この時点でそれをクリアし、もう一度 F5 キーを押すと無効になります
}else{
echo "このページを更新したり、フォームを繰り返し送信しないでください";
} }?> 3: サーバー上で最後にリダイレクト処理を行います
if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
// データなどを処理しますデータを挿入すると、すぐに他のページにリダイレクトされます。
header('location:submits_success.php') //効果は JSP の sendRedirect と同様です
}



------解決策---------
誰かが前に質問しましたが、極端な場合です。 例えば投稿の間隔が狭い!そして量が多い。 どうやって対処すればいいでしょうか?



------解決策---------
お客様に異議がない場合は、以下の入場を禁止します。 onsubmit= "false を返す;"
------解決策---------
それほど複雑ではなく、JS を使用すると非常に簡単です
とても簡単です。

------解決策------------------
ボタンを無効にし、Enter キーを押してこのボタンをトリガーします, まだ提出できないと思います。 もう 1 つのメソッドは $("#ok:not(.btn-disable)").live("click",function()
{
$(this).addClass("btn-disable" );
}

------解決策---------
「重複送信」をテストできないのはなぜですか?毛織物?
------解決策------------------
ディスカッション

はは、私は頻繁にテストしているだけです。
入力ボックス、送信ボタン、数値を入力、Enter キーを押したままにして、バックグラウンドで UPDATE を書き込みます。qty=qty+入力数量。自分の方法に従ってテストして、結果がどうなるかを確認できます。 。

以前にいくつか試しました
1. onsubmit イベント,sumbmit1 (送信ボタンの名前).disabled=true;
2. の値を持つ非表示のボタンをフォームに配置します。セッション、送信後、2 つの値が同じかどうかを判断します...

------解決策----------------------

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート