プロが教える店舗&オフィスのセキュリティ対策術

フォームでデータを送信した後に、ブラウザの更新ボタンを押すとデータが再送されますが、サーバ側で違いのチェックをPHPで出来ますか?
よろしくお願いいたします。

A 回答 (3件)

ANo.2さんの方法以外のものを、参考まで書きます。



トランザクショントークンというものを使う方法です。
http://ml.php.gr.jp/pipermail/php-users/2003-Dec …
    • good
    • 0
この回答へのお礼

大変参考になりました。ありがとうございます。

お礼日時:2006/12/24 11:35

方法としては過去に送信された全てのデータと比較することで全ての2重送信を防げますが


偶然同じ値を送った場合に弾かれるので犠牲が大きすぎるといえるでしょう。
また負荷の面でも初期は良いですがログが蓄積してくると

受信するPHPの処理の最後でheader ("Location: リダイレクト先URI");
とすることでリロードによる2重送信を防げます。
ただし戻るボタンで戻って再度送信ボタンを押されると同じものを受け付けることになりますので
ログなどに送信したIPアドレスを書き出し過去n分間の間にデータを送信したIPからの送信を受け付けないなどの対策を取らなければならないでしょう。
    • good
    • 0
この回答へのお礼

大変参考になりました。うまくいきました。ありがとうございます。
今後もわからないことがありましたら、よろしくお願いいたします。

お礼日時:2006/12/24 11:32

>サーバ側で違いのチェックをPHPで出来ますか?



違いというくらいですから、データをサーバー側で保管している
ということですかねぇ?
それであれば全データを比較するだけですね
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!