[PHP-users 4227] ブラウザの戻るボタンでフォームの内容を消えなくする

Y.Inoue php-users@php.gr.jp
Mon, 10 Dec 2001 19:51:09 +0900


井上です。

FAQかもしれませんが、
ブラウザの戻るボタンでフォームの内容を消えなくする
よい方法を教えいただきたいのですが。。。

POSTされたFormのページへ戻ると、
ブラウザ、キャッシュの設定によって変わりますが、
・キャッシュに残っているページが表示される
 (ほとんどのブラウザでは、フォーム内容が消えている)
・有効期限切れメッセージが出る
のどちらかになりますよね?

これを、最低
Windows、Mac
IE4.0以上、NN4.0以上
JavascriptOFF、未対応
cookie OFF、未対応
の環境で回避したいのですが、よい方法はありますでしょうか?

GETにすれば可能なのですが、
・Formの内容をSSLを使って暗号化したい
・データ量が多少多い
のでPOSTにしたいです。

いろいろ、調べましたが、今のところ、
ページCのForm内容を消したくない場合、
ページA->POST->ページCとするところを
1.ページAから、ページBへPOSTする
2.ページBで、phpのsession処理関数を使い値を保存し、
  自動的にページCへGETでセッションIDを渡して、ページを移動する。
    ここで、session_cache_limiterは、privateにします。
  このとき、Javascriptのlocation.replaceまたはlocation.hrefで移動するか、
  <meta http-equiv="refresh" content="0; URL=hogehoge.php">で移動
3.ページCを表示
という方法をとっています。
ページBで”読み込んでいます”などのメッセージを表示し、
POSTをGETに変えています。

この結果、ページCへ戻った場合、GETなのでフォームの内容を
戻すことができますが、ページCから戻る場合が問題になります。
IE5.5  Javascript ON     ページC→ページA 期待通り戻れる
IE5.5  Javascript OFF  ページC→ページA 期待通り戻れる
        content="0;これを0にすると、ページBは表示されず
                直接ページAへ戻れるようです。
NN4.0 Javascript ON   ページC→ページA 期待通り戻れる
NN4.0 Javascript OFF ページC→ページB 戻れない
          ページBでは、Data Missingというメッセージになってしまいます。
     もう一度戻るボタンを押せば戻れますが、、
     もちろんここで、更新ボタンを押したらページCへ行ってしまいます。
これの、問題点は、
・NN4.0 Javascript OFFは未対応
・ページBを一瞬表示しなければならない。
  入力ページが4ページも続くのでできれば避けたいですが、
  ブラウザーの戻るボタンで戻るとフォームが消えてしまうよりはいいかな。
です。

もっとよい方法があれば、ご教授ください。

環境
RedHat7.1
Apache 1.3.22
PHP 4.0.5

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 立命館大学 理工学部 
       情報学科  2回生   井上 陽平
              inohei@ma.nasicnet.com
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/