• ベストアンサー

ブラウザの更新ボタン

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

  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

方法としては過去に送信された全てのデータと比較することで全ての2重送信を防げますが 偶然同じ値を送った場合に弾かれるので犠牲が大きすぎるといえるでしょう。 また負荷の面でも初期は良いですがログが蓄積してくると 受信するPHPの処理の最後でheader ("Location: リダイレクト先URI"); とすることでリロードによる2重送信を防げます。 ただし戻るボタンで戻って再度送信ボタンを押されると同じものを受け付けることになりますので ログなどに送信したIPアドレスを書き出し過去n分間の間にデータを送信したIPからの送信を受け付けないなどの対策を取らなければならないでしょう。

LACOMS
質問者

お礼

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

その他の回答 (2)

回答No.3

ANo.2さんの方法以外のものを、参考まで書きます。 トランザクショントークンというものを使う方法です。 http://ml.php.gr.jp/pipermail/php-users/2003-December/019965.html

LACOMS
質問者

お礼

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

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>サーバ側で違いのチェックをPHPで出来ますか? 違いというくらいですから、データをサーバー側で保管している ということですかねぇ? それであれば全データを比較するだけですね

関連するQ&A

  • ブラウザの「戻る」ボタンを押したときの移動先

    送信フォームがあるページで、<form action="" method="post">としています。このフォームから送信した場合、送信後、同じページがもう一度読み込まれると思うのですが、そこでブラウザの「戻る」ボタンを押すと、当然送信前のページ(=同じページ)に移動して、もう一度押すとその前に表示していたページに戻ります。 送信後にブラウザの「戻る」を押したときに同じページをもう一回表示せずに、その前に表示していたページに直接移動させるようなことは、可能でしょうか? $_SERVER['HTTP_REFERER']を使って「戻るリンク」を設置することはできるのですが、今回は、ブラウザの「戻る」ボタンの動作の話です。 ページはPHPで生成しています。

    • ベストアンサー
    • PHP
  • フォーム送信後の更新ボタンでも$_POST変数が初期化されない

    フォームのサブミット後にプログラムが走るようになっているtest.phpがあるのですが、フォーム送信後に更新ボタンを押しても再度ポストされるようになってしまっています。 ブラウザの更新ボタンを押したときには、ポストせずにフォームをクリアしたいのですが、どうすればできますでしょうか? <form method="post" action="<?php print($_SERVER['PHP_SELF']); ?>"> <input type=text name=aaa> <input type="submit" name="submit" value="submit"> </form> <?php if($_POST['submit']) { 処理 } ?>

    • ベストアンサー
    • PHP
  • フォーム送信後の戻るボタンの挙動について

    フォーム送信後の戻るボタンの挙動について PHPでホームページの一部を更新できるシステムを作りました。 項目一覧ページ → 編集ページ → 編集確認ページ → 更新後再度一覧ページへ、といったフローで更新がおこなわれます。 このとき、通常だと確認ページからブラウザの戻るボタン、もしくは画面内の戻るボタンを押すと、編集ページに戻り、入力時の情報がフォーム内に残っているのですが、編集ページを開いてから10分程度待ってから入力・送信後に確認ページから戻ると編集ページのフォーム内に入力したはずの入力情報が消えてしまいます。 おそらくサーバ(Apache)かPHPの設定によるものだと思うのですが、考えうる設定としてどんなものがあるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 更新ボタンを押してもデータが更新されない方法

    プログラミング初心者です。 INSERT INTOを使ってPHPからMYSQLにデータを書き込むページを作ったのですが、ブラウザの更新ボタンを押したり、戻るボタンでそのページにたどり着くと同じデータが再度書き込まれてしまいます。 このようにならないためにはどのように処理すればよろしいのでしょうか?一般的な方法を教えていただけたらありがたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ブラウザーの戻るボタンを押して戻ったときのみJavaScriptを実行したい

    スタートページ[1]がありSubmitボタンを押すと、そこから別のページへ[2]リンクし、[3]等へつながります。 [2]や[3]等から[1]にブラウザーの戻るボタンを教えて戻った場合にとあるJavaScriptのコードを実行したいのですが、戻った際にページの再読込をなるべくさせずに行いたいです。 現在、Submitボタンを押すと同時に押したときのパラメータをCookieにも保存してあります。 方法としては以下の2パターンが考えられますが、いずれも方法が分かりません。 ・ページの表示が再び有効になる際、cookieにデータがあればそのデータを使う。 ・ブラウザーの戻るボタンを押した事を判定するコードを使ってフォームを再現する。 御指南頂けませんでしょうか。お願いします。 -------------------------------------------------- 何をしているかといいますと、DHTMLで複数のselectフォームを左から順に、前の項目によって次の項目の内容が変化する、というものを作りました。ですがフォーム送信した後、ブラウザーの戻る機能を使ってフォームのあるページに戻ると元々は[選択してください]という項目しかないために存在しないSelectボックスのOptionIndexを参照され、空白となってしまうのを避けたいのです。(new Optionを利用)

  • ブラウザの更新ボタンってどこにあるの?

    サイト利用時、一定時間操作がなかったら、ブラウザの更新ボタンを押して下さいって出るのですが 何処にあるのか分かりません 分かる方回答お願いいたします。

  • ブラウザの戻るボタンを押すと警告画面が表示される。

    こんにちは!! ブラウザで、あるページを表示し、しばらくして ブラウザの[戻る]をクリックすると、 下記のメッセージ画面が表示され、 [更新]をクリックしないと前画面に戻れません。 -------------------------------- -------------------------------- 警告: ページの有効期限切れ 要求したページは、 フォームで送信された情報を 使用して作成されました。 このページは、 もう利用できません。 セキュリティ保護のため、 情報は自動的には、 再送信されません。 情報を再送信し、 このwebページを表示するには、 ツールバーの[更新]ボタンを クリックしてください。 -------------------------------- -------------------------------- この画面を表示させずに[戻る]機能を 使えるようにするには、 サーバ、あるいはクライアントの どこの設定を変更すればいいのか 教えてください。 (現在、実行環境のみが上記のように なっています。 開発環境は上記の警告画面は 表示されません。) 実行環境: サーバ :AS400 webサーバ :Websphere クライアント:Windows98, IE5.0 開発環境: サーバ :WindowsNT4.0 webサーバ :IIS クライアント:Windows98, IE5.0

  • フォームボタン

    PHPとHTMLの違いが今イチよくわかっていないんですが、HPを作成している者です。 業者の方が作ったPHPやHTMLファイルを引き継いで、それを元に更新したり、自分で新たにHTMLファイルを作って更新したりしています。 GoLiveを使っているのですが「ボタン」のリンクの変更の仕方がわかりません。ヘルプを読んでみたりもしましたが、載っていないようなので質問させてもらいました。 あるページに「フォーム領域」を使っていたところがあったので真似てやってみたのですが、サーバーにおいてブラウザでみるとリンク先をフォーム領域で変更したはずなのに前のリンクのままでした。なにか特別な方法があるのでしょうか? リンク先というのがPHPファイルなのですが、自分で少し変更したPHPの会員種別選択(register_xxx.php){登録ボタンを押す}→会員情報登録(register_info_input.php)にしたいのですが、ブラウザで見ると会員種別選(register_xxx.php){登録ボタンを押す}→以前の設定PHPファイルにいってしまいます。(会員種別選択を2回繰り返す形になってしまっています。)それと、会員情報入力ページが本来なら入力項目が15ぐらいあるのに4項目しか表示されなくなってしまいました。 どうしたら良いのか教えてください。

    • ベストアンサー
    • CSS
  • ブラウザの更新ボタンでセッションを破棄したい

    すべて同一ページ内で処理と画像の表示などをしています。 一番初めにそのページにアクセスした場合、ダウンリストなどしかなく、 その情報を送信したら、それに応じたものをその表示スペースに表示させるものなのですが、 ブラウザの更新ボタンを押すと、再送信してまた同じページがでてきてしまいます。 できれば一番初めの画面に戻りたいのですがどうすればいいでしょうか?

    • 締切済み
    • PHP
  • ブラウザ上で.htaccessファイルを更新するには?

    ブラウザ上で.htaccessファイルを更新できるようにしたいです。 .htaccessファイルを読み込んで表示させ、テキストエリアで編集後 更新ボタンで更新できるphpを作るにはどうすればできるでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう