Service(業務内容)

Technology::PHP Tips

「ページの有効期限切れ」問題

PHPのセッションとフォームデータをPOSTで受け渡した場合に、IEの戻るボタンで戻ると「ページの有効期限切れ」の警告が出てしまいます。解決方法は、次の一行をPHPファイルの最初のほうに置きます。

session_cache_limiter('private, must-revalidate');

>>> http://jp.php.net/manual/ja/function.session-cache-limiter.php

PHPのサイトでも、上の値を例に説明していることが多いようです。これでメッセージは出なくなりました。

しかし、この設定だと、戻るボタンで表示しても必ず再読込をします。セッションを使っていて、入力フォームがある場合は入力内容が消えてしまう問題があります。この場合は、次の一行を足すことで解決するはずなのですが・・・

 

session_cache_limiter('private_no_expire');

これで、戻るボタンを使ってもキャッシュから表示してくれます。 しかし、

今度はキャッシュばかり表示してリロードしない!

この設定でIE6を使った場合、リフレッシュしてもキャッシュから読み込んでしまうようです。これって、IEのバグ?Netscapeでは問題はありません。

仕方がありません。この場合への対処法はURLに何か値を入れてあげてユニークにしますす。例えば、

<a href="http://www.x.com/r.php?t=<?php echo time();?>">reload</a>

Yahooのサイトを調べると時間の変わりにランダムな値を使っているようです。