• ベストアンサー

PHP 確認画面から入力画面に戻ると入力したデータが消える。

PHPプログラム初心者です。 現在フォームに入力したデータをPHPのmail()関数を使用して特定のメールアドレスへ送信するプログラムを作成しています。 プログラムの流れとしては、 入力画面 ↓ 確認画面 ↓ 送信完了画面(メールでデータ送信) ここで問題があるのですが、確認画面で入力ミスが見つかりブラウザーの「戻る」ボタンで入力画面に再度戻った場合、入力したデータが全て消えてしまいます(ブラウザーはIE。)。どうすれば、確認画面から入力画面に戻っても入力したデータが消えないようにできるのでしょうか? データの引渡しをGETではなくPOSTにすればよいだけですか? また、現在データの引渡しにはセッションではなくtype=hiddenを使用しているのですが、これも関係しているのでしょうか? よろしくお願いします

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

サーバ設定も関係するはずなので、PHPのみでの対応は不可能。 ブラウザの「戻る」ボタンは使わせないのが原則。 セッションを使えばデータを一時保存しておいて戻るとデータを展開すると言うのは可能。(送信時にセッションを消す) ただし、多くのサーバはブラウザの戻るボタンを押した場合、データを再送信するか聞いてくるはずなので、あまり実用的とはいえないかもしれない。 ブラウザの戻るボタンは使わせずに、PHP側で用意した戻るボタンを使用させるようにしたほうが良いでしょう。

kitty1000
質問者

補足

moon_nightさん ご回答ありがとうございます。 >ブラウザの戻るボタンは使わせずに、PHP側で用意した戻るボタンを使>用させるようにしたほうが良いでしょう。 上記のコメントについてですが、moon_nightさんがおっしゃっているのはphpファイル内にjavascriptの<a href="javascript:history.back();">などのプログラムを埋め込んでそのリンクを押してユーザにページを戻ってもらうということですか? もしJavascriptを使用するのではなくPHPコードで行なう場合、差し支えなければ、簡単なコードをご教授下さい。 kitty1000

その他の回答 (1)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

ブラウザの「戻る」や「履歴」で戻ったときに、formの入力内容を次のページへ行く直前の状態に再現するか、ページ構築時の状態にするかはブラウザ側の問題でもあるので、サーバーやphpからは操作は難しいでしょう。 FireFoxやOperaはformの入力内容を再現するけど、IEは再現しないようですね。 No1の方のおっしゃるように「戻る」機能もphp側でページ内にボタンやリンクで作る方が賢明かと。

kitty1000
質問者

お礼

hrm_mmmさん ご回答ありがとうございました。 kitty1000

関連するQ&A