おそらくスピード、または悪意のあるWebページの更新の制限を無視することはできませんので、ユーザは、繰り返しにデータベースに同じレコードを結果として、フォームを送信する際に、連続使用者が存在する可能性があるので、繰り返しフォームを送信できないようにされ、送信ボタンをクリックしますか、悪意のある攻撃者は、その後、我々はそのような変更やトラブルに巻き込まれるデータベースにデータを追加するなど、データの提出後に対処する、データを提出します。
それでは、どのように起こるの重複フォームの送信でこの現象を回避していますか?重複して提出フォームを防止するための多くの方法は、いくつかの一般的な方法のPHPの要約で見てみましょうを制限する必要があります。 ターンテーブルのはじめにダイレクトドライブモータ〔ターンテーブルのダイレクトドライブモーター]!
まず、最初に正面から制限を行います。
フロントエンドJavaScriptが複数のクリックは、送信ボタンを防止すること無効にすると、この単純な方法の後、ボタンをクリックするだけで無効になっていますが、欠点は、ユーザーがJavaScriptを無効にしている場合、スクリプトが無効であることです。
以下の例では、我々は重複したフォーム送信の問題を処理するためにそれを使用して言及したお客様は、以下のコードを参照してください。
1 2 3 4 |
|
ユーザーが「送信」ボタンをクリックすると、ボタンがグレーの状態になり、
そこの方法ですが、また、JavaScript関数の使用は、しかしOnSubmitの()メソッドを使用して、フォームを提出した場合は、すぐにポップアップしますダイアログを、次のように:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
ユーザーがボタンを「提出」をクリックしている場合は、上記の例では、スクリプトが自動的にユーザーが持っていることを示す、submitcountゼロ以外の値を決定するために、ユーザが再び提出しようとするカナダ1、スクリプト変数から現在の状態とsubmitcount変数を記録します回避の重複に提出してフォームを送信します。
第二には、クッキーを使用して処理します
記録状態を使用してクッキーフォーム送信は、フォームが送信されているかどうかを確認することができ、その状態に応じて、以下のコードを参照してください。
1 2 3 4 5 6 7 8 9 10 11 |
|
クライアントがクッキー無効になっている場合は、この方法は、この点には何の影響、してください注意を払っていません。
第三に、セッションハンドリングの使用
使用PHPのセッションますが、また、重複がフォームを送信避けるために。あなたはセッション変数を持つフォーム送信の値を記録することができますので、割り当てられている実行しているPHPのセッション変数の過程で、サーバー側に保存されたセッションは、変更することができます次回は、この変数を訪問し、新しい値を取得します。、それは考慮されていない場合再提出ユーザーは、次のコードを参照してくださいされています。
1 2 3 4 5 6 |
|
在页面表单上将随机数作为隐藏值进行传递,代码如下:
1 |
|
在接收页面的PHP代码如下:
1 2 3 4 5 6 7 8 9 10 |
|
第四、使用header函数转向
除了上面的方法之外,还有一个更简单的方法,那就是当用户提交表单,服务器端处理后立即转向其他的页面,代码如下所示。
1 2 3 4 |
|
这样,即使用户使用刷新键,也不会导致表单的重复提交,因为已经转向新的页面,而这个页面脚本已经不理会任何提交的数据了。
以上就是php防止表单重复提交详解的详细内容