ホームページ  >  記事  >  バックエンド開発  >  php はフォームが繰り返し送信されることを防ぎます、php はフォームが送信されることを防ぎます_PHP チュートリアル

php はフォームが繰り返し送信されることを防ぎます、php はフォームが送信されることを防ぎます_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:45:33947ブラウズ

php はフォームの繰り返しの送信を防ぎ、php はフォームの送信を防ぎます

ユーザーがフォームを送信すると、ネットワーク速度のせいで同じレコードがデータベースに繰り返し挿入される可能性があり、Web ページが悪意を持って更新される可能性があり、これはより困難です問題。同じフォームを繰り返し送信することを避けるために、クライアント側とサーバー側から同時に開始することができます。

1.クライアントスクリプトの使用

[php] プレーンコピーを表示 ​
  1. "post" name="register" action="test.php" enctype="multipart/form-data"> <入力名="テキスト" タイプ="テキスト" id="テキスト" />
  2. "cont" value="Submit" type="button" onClick=
  3. "document.register.cont.value='送信中です。しばらくお待ちください...';document.register.cont 。無効=true;document.the_form.submit();">
  4. ユーザーが「送信」ボタンをクリックすると、ボタンは灰色になり使用できなくなります。
  5. 上記の例では、OnClick イベントを使用してユーザーの送信ステータスを検出します。「送信」ボタンがクリックされると、ボタンはすぐに設定されます。無効な状態になると、ユーザーはボタンをクリックして再度送信できなくなります。
  6. これも JavaScript の関数を使用する方法がありますが、フォームが一度送信されると、すぐにダイアログ ボックスが表示されます。コードは次のとおりです。
[php]

プレーンコピーを表示 ​

<スクリプト言語=
"javascript">

var submitcount=0;

関数 submitOnce (フォーム){
  1. if (submitcount == 0){ C 送信数 ++;
  2. trueを返します。
  3. } 他{
  4. アラート(「動作中です。再度送信しないでください。ありがとうございます!」);
  5. }
  6. }
  7. <フォーム名="the_form" メソッド="投稿" アクション=
  8. "" onSubmit=
  9. "return submitOnce(this)"> <入力名="テキスト" タイプ=
  10. "テキスト" id=
  11. "テキスト" />
  12. <入力名="続き" 値=
  13. "送信" タイプ=
  14. "送信">
  15. 上記の例では、ユーザーが「送信」ボタンをクリックすると、スクリプトは現在のステータスを自動的に記録し、submitcount 変数を 1 ずつ増やします。ユーザーが再度送信しようとすると、スクリプトは submitcount 変数が値がゼロ以外の場合、フォームの繰り返しの送信を避けるために、フォームが送信されたことをユーザーに通知します。 2.セッションを利用する(JSPの処理方法と同じです)
  16. PHPのSession関数を利用することで、フォームの重複送信を回避することもできます。セッションはサーバー側に保存され、次回この変数にアクセスすると、セッション変数を使用して送信された値を記録できます。フォームに一致しない場合は、繰り返し送信しているユーザーとみなされます。 ページAのコード: [php] プレーンコピーを表示 ​
    1. _Session_start ();
    2. // 現在のセッションに従って乱数を生成します $code = mt_rand(0,1000000);
    3. $_SESSION['code'] = $code;
    4. //この乱数をセッションに一時的に保存します
    5. ?>
      "form1" name=
    6. "form1" method=
    7. "post" action=
    8. "t2.php">
    9. 説明"text" name="title" /> "hidden" name="originator" value="">

  17. &lt; p&gt;&lt; input type = "submit" name = "submit" value = "submit"/&gt;&lt;/p&gt;
  18. Bページ: [php] プレーンコピーを表示 ​
  19. セッション開始(); if(isset($_POST[
  20. '発信者'])) {



if(

$_POST['発信者'] == $_SESSION[
    'コード']){
    1. ️エコーあり (Unset (n $ _Session [ "code"]; // この時点でクリアしてから、f5 を押します }他{
    2. エコー 「このページを更新したり、フォームを繰り返し送信しないでください。」; } }?>
    3. http://www.bkjia.com/PHPjc/1040165.html
    4. www.bkjia.comtru​​e
    5. http://www.bkjia.com/PHPjc/1040165.html
    6. 技術記事 PHP はフォームの送信が繰り返されないようにします。PHP は、ユーザーがフォームを送信するときに、ネットワークの速度や Web ページが意図的に更新されることが原因で、同じレコードがデータベースに繰り返し挿入される可能性があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。