[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
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/