戻るボタンと「有効期限切れ」画面
session_start()した画面で、IEの場合、ブラウザの戻るボタンで戻ると「有効期限切れ」画面がでる・・・。
よく見る対処法は
session_cache_limiter('private, must-revalidate'); session_start();
既存コードもそうなってた。
勉強のために、と思ってPHPのマニュアルを検索したけど'private, must-revalidate'パラメータってないじゃん!
ここは先人の知恵を拝借。
PHP/「ページの有効期限切れ」対策 - Glamenv-Septzen.net
session_cache_limiter('private_no_expire'); session_start();
なるほど。
次の問題。
'private'じゃ、ダメな理由は?
ドキュメントにもあるけど
privateモードにおいて、Expireヘッダがクライア ントに送信されます。これは、Mozilla のようないくつかのブラウザを混乱させます。これを避けるには、 private_no_expireモードを使用してください。 このモードでは、Expireヘッダはクライアントに送信されません。
http://php.net/manual/ja/function.session-cache-limiter.php
混乱って何!?
キャッシュとセキュリティとPHP – へんじがない。ただのポンコツのようだ。
なるほど。privateだとExpireに過去日付が設定されて挙動がおかしくなる場合があるってことか。
でもExpireなしの場合の挙動はどうなるんだろ?