人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: kyoko55
●カテゴリ:ウェブ制作
✍キーワード:PHP TIME アクセス クッキー クライアント
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● unchidopon
●30ポイント

標準の動作


2 ● skky
●30ポイント

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

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

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

◎質問者からの返答

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

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


3 ● typista
●40ポイント

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関数で、クッキーに書き込まれるのは、最初だけというのは標準なんですね。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ