ホームページ >バックエンド開発 >PHPチュートリアル >フォームの繰り返し送信を防ぐ PHP メソッド_PHP チュートリアル

フォームの繰り返し送信を防ぐ PHP メソッド_PHP チュートリアル

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

フォームの繰り返し送信を防ぐためのphpメソッド

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

1.クライアントスクリプトを使用する

[コード]xm l コード:

1

2

3

4

ユーザーが「送信」ボタンをクリックすると、ボタンは灰色になり使用できなくなります

上記の例では、on click イベントを使用してユーザーの送信ステータスを検出します。「送信」ボタンがクリックされると、ボタンはすぐに無効な状態に設定され、ユーザーはボタンを再度クリックして送信できなくなります。

これも Java vasscript の関数を使用する方法ですが、on submit() メソッドを使用します。コードは次のとおりです。

[コード]xm l コード:

01

02 var submitcount=0;

03 function submitOnce (フォーム){

04 if (submitcount == 0){

05 submitcount++;

06 return true;

07 } 他{

08alert(「操作中のため、再度送信しないでください。よろしくお願いします!」);

09 return false;

10}

11}

12

13

14

15

16

上記の例では、ユーザーが「送信」ボタンをクリックした場合、スクリプトは現在のステータスを自動的に記録し、submitcount 変数を 1 ずつ増やします。ユーザーが再度送信しようとすると、スクリプトは submitcount 変数の値がゼロ以外の場合、フォームの二重送信を避けるためにユーザーに「送信済み」と表示されます。

2.セッションを利用する(JSPの処理方法と同じです)

PHP のセッション機能を利用すると、フォームの繰り返しの送信を避けることもできます。セッションはサーバー側に保存され、次回この変数にアクセスすると、セッション変数を使用して送信された値を記録できます。フォームが一致しない場合は、繰り返し送信しているユーザーとみなされます。

ページAのコード:

[コード]phpコード:

01 02 session_start(); //現在のSESSIONに基づいて乱数を生成します

03 $code = mt_rand(0,1000000);

04 $_SESSION['code'] = $code; //この乱数をセッションに一時的に格納します

;

05 ?>

06

07

説明書

08

09

10

Bページ:

[コード]phpコード:

01 02session_start();

03if(isset($_POST['originator'])) {

04 if($_POST['originator'] == $_SESSION['code']){

05 echo "ok";

06 unset($_SESSION["code"]); //クリアして再度F5を押しても効果はありません

07 }その他{

08 echo "このページを更新したり、フォームを繰り返し送信しないでください";

09}

10}?>

www.bkjia.com本当http://www.bkjia.com/PHPjc/1043516.html技術記事フォームの繰り返し送信を防ぐための PHP メソッド。ユーザーがフォームを送信すると、ネットワーク速度の関係で同じレコードがデータベースに繰り返し挿入される可能性があります。これは問題です...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。