ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでフォームが繰り返し送信される問題を解決する方法の紹介

PHP_PHP チュートリアルでフォームが繰り返し送信される問題を解決する方法の紹介

WBOY
WBOYオリジナル
2016-07-13 10:27:07916ブラウズ

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 回目の送信を許可されるべきですか?

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

実際にはそんなことはしていない

成熟したプロジェクトは通常、ビューを分離し、ルーティングを通じて転送するため、このようなことは起こりません!

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/820420.html技術記事フォームの繰り返し送信を解決するための PHP 実装方法 はじめに フォームの繰り返し送信を防ぐために、js を使用する以外に、繰り返し送信が発生する問題もあります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。