[PHP-users 12684] Re: session関数を使った際のブラウザ「戻る」ボタン

Yusuke Gunji php-users@php.gr.jp
Mon, 20 Jan 2003 23:30:22 +0900


グンジと申します。

# うろ覚えor未確認な部分もありますが、、、

Formでサブミットする際、メソッドはPOSTですか?
POSTでデータをサブミットすると、cargo.phpは
動的に生成されるため、(php.iniの設定にもよりますが)
ページはキャッシュされません。そのため、ブラウザの
戻るボタンで戻った場合、「有効期限切れ」という
エラーが表示されます。
# php.ini のsession.cache_limiterがnocacheの
# 場合、送信されたデータはキャッシュされません

> cargo.phpからform.htmlへブラウザの「戻る」で
> 戻る際は問題無いのですが、mail.phpからcargo.phpへブラウザの「戻る」で戻ると
> 「警告 : ページの有効期限切れ」と出てしまします。これはsession関数を
> 使用した場合、仕方の無い事なのでしょうか?
> (更新をクリックすれば表示されますし、mail.phpにcargo.phpへのリンク
> を張ってそこから戻れば問題無いようです)

更新の場合は、再度データを送信しているので表示できます。
また、リンクを張った場合は再度cargo.phpをリクエストしているため、
セッションで格納したデータをロードするため表示できるのだと思います。

> cargo.phpからmail.phpにはsession関数を利用せずにtype=hiddenで送れば問題が
> 解決しそうなのですが、もし他に方法が有りましたらご伝授下さい。

たぶんですが、hiddenでデータを送っても、解決しないのでは?
確実な解決方法としては、php.iniのキャッシュの設定を見直すか、
POSTでデータを送信するのではなく、GETを使用してデータを送信する
ようにしてみてはいかがでしょうか?

# GETの場合は送信される対象のデータがURLとして送られてくるため、
# 戻るボタンで戻ってもGETデータを再度解析するために、ページが
# 表示される、のだと思うのです^^;

## 経験則で申し訳ないのですが、php.iniのキャッシュの設定を
## 有効にしてしまうと、データの整合性をとるのにかなり
## 苦労します。

-- 
Yusuke Gunji <cross@gun-z.net>