PHPのセッション関数ですが、クッキーの期限を常に最終アクセスの何秒後かに

設定しようとして、
<?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関数で目的の動作にするにはどうしたらよいでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/06 18:07:00
  • 終了:--

回答(3件)

id:unchidopon No.1

unchidopon回答回数57ベストアンサー獲得回数02005/02/06 20:11:23

ポイント30pt

標準の動作

id:skky No.2

skky回答回数98ベストアンサー獲得回数42005/02/07 00:31:51

ポイント30pt

http://ns1.php.gr.jp/pipermail/php-users/2001-August/001233.html

[PHP-users 1226] Re: セッションの保存期間

ちょっとうろ覚えでですがsession.cookie_lifetimeはcookie使用開始後何秒有効かを指定するので、最後にアクセスがあってから何秒有効かを指定するのはsession.gc_maxlifetimeだった気がします。

id:kyoko55

私も試したことがないのですが、確かこれはサーバ側のデータの保存を保証する期間のような気がします。

そうでなくて、クライアント側に有効な期間を設定したくて、session関数でも、setcookieのように毎回クッキーを上書きする方法はないんでしょうかねぇ。

2005/02/10 11:06:41
id:typista No.3

typista回答回数359ベストアンサー獲得回数72005/02/07 19:39:44

ポイント40pt

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を使用するようです。

ページ構成上、要件のページに埋め込んでも上手くいく場合もあるかとは思いますが・・・

id:kyoko55

参考URLはなかなか興味深いものでした。

session関数で、クッキーに書き込まれるのは、最初だけというのは標準なんですね。

皆さん、ありがとうございました。

2005/02/10 11:30:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません