0

URL パラメータを介してデータベースに挿入する必要があるものを取得しますが、残念ながら現時点では変更できません。つまり、次のようなものです: send.php?id=2&messag=hello など。

データが送信された後、PHP の場所を使用してユーザーを別のページに送信します。ユーザーが [戻る] ボタンを押すと、URL には同じパラメーターが含まれているため、データはもちろん再度送信されます。データは GET url パラメータから取得されるため、自己リダイレクトもできません。

残念ながら、ユーザーが情報を送信したり、一意のタイムスタンプなどを作成したりするために使用しているフォームにもアクセスできません。このシナリオで、二重提出を避ける最善の方法は何ですか?

4

2 に答える 2

0

GET を POST に変更できない場合は、リクエストによって何かが変更されるたびに強く推奨されますが、バックエンドで重複するエントリをチェックすることをお勧めします。

何が重複を構成するかを判断するのはあなた次第です。すべてのパラメーターは同じですか? いくつかの重要なパラメータは同じですか? または、同じユーザーから過去 5 分以内に同じクエリが送信されましたか?

別の解決策は、「ノンス」を使用することです。ページが生成されたら、一度だけ使用できる一意のトークンである nonce を送信します。彼らが「戻る」をクリックすると、同じナンスを送信しようとします。これは、すでに使い果たされていることを確認できます。

于 2013-09-20T18:16:10.393 に答える
0

$_SESSIONまたはに何かを格納して送信をチェックする以上のことはできないと思います$_COOKIE

たとえば、タイムスタンプを付けて、10 分の時間経過で再送信を許可しないようにチェックすることができます。

本当は、プログラムが悪いということです。挿入リクエストは までに行う必要がありますPOST。そうすれば、ブラウザだけが警告します。そして、リダイレクトが機能します。

于 2013-09-20T18:20:45.303 に答える