PHPでsessionを使用するとキャッシュが無効になる

PHPのプログラムで、ブラウザの戻るボタンで戻ろうとすると、

Firefoxなら、

「このページを表示するにはフォームデータを再度送信する必要があります。フォームデータを再送信すると以前実行した検索、投稿や注文などの処理が繰り返されます。」

というメッセージが表示され、IEなら、

「Web ページの有効期限が切れています」

というメッセージが表示されるのを何とかしてくれと言われた。

PHPでsessionを使うと、過去日付の"Expires"と"Pragma: no-cache"が設定され、クライアントキャッシュが無効になるのが原因らしい。

下記のプログに書いてありました。

http://fdays.blogspot.com/2007/11/ie6cache-controlcache.html

ということで、こんなコードを書けば良いらしい。

// 戻るボタンで戻れるようにするための対応。
$date_today = mktime (0, 0, 0, date("m"), date("d"),  date("y"));
$date_tomorrow = $date_today + 86400;
date(DATE_RFC1123, $date_tomorrow);

header(‘Cache-Control: max-age=’ . ($date_tomorrow – time()));
if (session_id()) {
  header(‘Expires: ‘ . date(DATE_RFC1123, $date_tomorrow));
  header(‘Pragma: cache’);    // Pragmaにはno-cache以外の設定値はないが、Firefox対応のため適当な文字列を設定する。
}