設定しようとして、
<?php
ini_set(”session.cookie_lifetime”, 30);
もしくは
session_set_cookie_params(30);
session_cache_limiter(’nocache’);
session_start();
?>
としていますが、
ブラウザがクッキーを送らない初回のアクセスだけしかクライアントに書き込まれず、
5秒間隔でアクセスしても、やがて初回からちょうど30秒後には、セッションが切れてしまいます。
setcookie(’PHPSESSID’, ’〜’, time()+30, ’/’);のように、毎回書き込むような
動作にならないため、困惑しています。
php.iniなどの設定がおかしいのでしょうか?それとも、これが標準の動作?
おかしくない場合、session関数で目的の動作にするにはどうしたらよいでしょうか?
http://ns1.php.gr.jp/pipermail/php-users/2001-August/001233.html
[PHP-users 1226] Re: セッションの保存期間
ちょっとうろ覚えでですがsession.cookie_lifetimeはcookie使用開始後何秒有効かを指定するので、最後にアクセスがあってから何秒有効かを指定するのはsession.gc_maxlifetimeだった気がします。
http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_...
PHP と Web アプリケーションのセキュリティについてのメモ
「f. セッション・タイムアウトへの対処」を読んでみてください。
kyoko55さんの例ですと、クッキーは使用せずに、session.maxlifetimeに30を設定し、
HTMLタグで
<meta HTTP-EQUIV=”Refresh” CONTENT=”20”>
※20秒間隔でハートビートの例
と記述すれば、要件に見合うと思います。
ただしframeを使用するようです。
ページ構成上、要件のページに埋め込んでも上手くいく場合もあるかとは思いますが・・・
参考URLはなかなか興味深いものでした。
session関数で、クッキーに書き込まれるのは、最初だけというのは標準なんですね。
皆さん、ありがとうございました。
私も試したことがないのですが、確かこれはサーバ側のデータの保存を保証する期間のような気がします。
そうでなくて、クライアント側に有効な期間を設定したくて、session関数でも、setcookieのように毎回クッキーを上書きする方法はないんでしょうかねぇ。