Codeigniter3.1.11のsess_expirationのお話
CodeIgniterでシステム開発をしているが、セッション情報をブラウザが閉じられるまで保持したい!
と思いconfig/config.phpの 「$config[‘sess_expiration’]」に0を設定するが有効になっていないらしい。。。
なんでだ?と思い調べたら「\system\libraries\Session\Session.php」の297行目にこうある。
$expiration = config_item('sess_expiration');// この行は関数上部にある。
if (empty($expiration))
{
$params['expiration'] = (int) ini_get('session.gc_maxlifetime');
}
else
{
$params['expiration'] = (int) $expiration;
ini_set('session.gc_maxlifetime', $expiration);
}
これおかしくないですか?「$expiration
」にはconfigで指定した「0」が入って来るんですが、if文でemptyで見てると、絶対trueになりますよね?そうすると、iniファイルで設定している(デフォルト1440)が必ず取れてくるんですが。
configの説明に
| 'sess_expiration'
|
| The number of SECONDS you want the session to last.
| Setting to 0 (zero) means expire when the browser is closed.
と書かれていますが、絶対 browser is closedにはならないですよね。。。
かなりハマったので記事にしてみました。