ホームページ  >  記事  >  バックエンド開発  >  PHPでフォームの繰り返し送信を禁止する方法

PHPでフォームの繰り返し送信を禁止する方法

coldplay.xixi
coldplay.xixiオリジナル
2020-08-11 09:31:552508ブラウズ

php メソッドでフォームの繰り返し送信を禁止します。まずフォームに入力非表示フィールドを追加します。次に、その値を使用してトークン値を保存します。その後、ページが更新されるとトークン値が変更され、トークンの値は送信後に決定されます 正しいですか? 最後に、フォアグラウンドで送信されたトークンがバックグラウンドと一致しない場合、それは重複送信とみなされます。

PHPでフォームの繰り返し送信を禁止する方法

#php でフォームの繰り返し送信を禁止するメソッド:

まずフロントエンドから制限を加えます。ボタンが 1 回クリックされるとフロントエンド JavaScript が無効になります。この方法は送信ボタンの複数回のクリックを防止するだけですが、ユーザーが JavaScript スクリプトを無効にすると機能しなくなるという欠点があります。

関連する学習の推奨事項:

php プログラミング (ビデオ)

2 番目に、送信後にページをリダイレクトできます。つまり、ジャンプします。送信後に新しいページに移動するのは、主に F5 キーによる繰り返しの送信を避けるためですが、欠点もあります。

3 番目に、データベースは一意のインデックス制約を作成します。

4 番目は、セッション トークンの検証を行うことです。

次に、セッション トークンを使用してフォームの繰り返しの送信を防ぐ簡単な方法を見てみましょう。

フォームに入力非表示フィールド、つまり type="hidden" を追加します。その値はトークン値の保存に使用されます。ページが更新されると、トークン値が変更されます。送信後、トークンの値が正しいかどうかを判断し、フロントエンドで送信されたトークンがバックエンドで送信されたトークンと一致しない場合は、重複送信とみなされます。

<?php 
/* 
* PHP简单利用token防止表单重复提交 
*/
session_start(); 
header("Content-Type: text/html;charset=utf-8"); 
function set_token() { 
 $_SESSION[&#39;token&#39;] = md5(microtime(true)); 
} 
  
function valid_token() { 
 $return = $_REQUEST[&#39;token&#39;] === $_SESSION[&#39;token&#39;] ? true : false; 
 set_token(); 
 return $return; 
} 
  
//如果token为空则生成一个token 
if(!isset($_SESSION[&#39;token&#39;]) || $_SESSION[&#39;token&#39;]==&#39;&#39;) { 
 set_token(); 
} 
  
if(isset($_POST[&#39;web&#39;])){ 
 if(!valid_token()){ 
 echo "token error,请不要重复提交!"; 
 }else{ 
 echo &#39;成功提交,Value:&#39;.$_POST[&#39;web&#39;]; 
 } 
}else{ 
?> 
 <form method="post" action=""> 
 <input type="hidden" name="token" value="<?php echo $_SESSION[&#39;token&#39;]?>"> 
 <input type="text" class="input" name="web" value="www.jb51.net"> 
 <input type="submit" class="btn" value="提交" /> 
 </form> 
<?php 
} 
?>

関連する学習に関する推奨事項:

プログラミング ビデオ

以上がPHPでフォームの繰り返し送信を禁止する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。