
いつも、お世話になっております。(PHP5.2.5)
セッションの有効期限の設定方法について色々調べましたが、
解決できなかったため、質問いたします。
---
例えば、
a.phpと、b.php、2つのスクリプトファイルからなるサイトにおいて、
a.php、b.phpどちらにおいても、スクリプトソース冒頭で、
//(1)サーバ側のセッションファイルの有効期限を(少なくとも)24時間に設定
//有効期限が過ぎた後は、ある一定の確率でGCが起動しファイルを削除
ini_set('session.gc_maxlifetime', 86400);
//(2)クライアント側のクッキーファイルの有効期限を24時間に設定
session_set_cookie_params(86400,"/");
//(3)セッションIDを生成、付与
session_start();
とし、
さらに、その上で、
IDとパスワードの入力に成功した場合に、
ログインさせ、その状態をセッション値に入れます
$_SESSION['login'] = 'login';
---
以上の経路をたどった場合の「ログイン持続期間」は、
24時間となると私は考えていますが、違いますでしょうか?
しかし、実際には、1時間も持ちません。
(ちょくちょくサイトにアクセスしていると、1時間以上持つようなのですが。
※つまり、期限が更新(延長)されているんでしょうかね。)
で、どうして意図した通りに動かないのかを調べようと、
firefoxにて、クッキーの有効期限を確認すると、
(2)の処理がうまくいっているせいか、
こちらの有効期限は意図通りに設定されています。
よって、意図通りに機能しない原因は、
サーバ側のセッションファイルの有効期限が
うまく設定されていないからなのでは、と思っています。
つまり、(1)の処理がうまく出来ていないことが予想されます。
はてさて、どこに問題があるのか…。
また、このサイトの例において、
もし仮に私の意図した通りの設計となった場合には、
アクセスの度に、その有効期限を24時間延長するような処理になるのでしょうか?
以上、どなたかどうかアドバイスを宜しくお願い致します。
---
なお、
セッション値に「time()」を格納し、
その時間をもとに、ログイン期限を設定し、
ログイン時からの経過時間と、その期限とを比較して、
ログイン状態を継続(延長更新?)させるか、切断するかを毎回判断させる、
なんていう方法もありそうですが、
その場合にしても、
結局は、サーバ側のセッションファイルの有効期限の持ちが悪ければ、
同様に、うまくいかないはずだと私は考えています。
No.1ベストアンサー
- 回答日時:
他のスクリプトの GC が起動してセッションファイルを消しているとか?
> 注意: 異なる値を session.gc_maxlifetime に指定している 別々のスクリプトがセッションデータの保存場所を共有している場合、
> 一番小さい設定値に達した時点でデータが消去されます。このような場合には、 お互いに session.save_path を使用します。
http://jp2.php.net/manual/ja/session.configurati …
この回答への補足
(お礼→補足 の順に記載)
早速ですが、前述の総点検をしてきました。
で、結果ですが、
全てのファイルにて、require_onceを使って設定ファイルを読み込んでおり、
その設定ファイルの中で、
ini_set('session.gc_maxlifetime', 86400);
session_set_cookie_params(86400,"/"); //86400==1day
session_start();
と、しているので、
「他のスクリプトの GC が起動してセッションファイルを消している」
ということは考えにくいのかなぁ…
と思いましたが、いかがでしょうか。
どこに問題があるのかさっぱりわからなくて困ってしまいます…。
なお、サイトへのアクセスを数分間隔で行っている場合には、
既に書きました通り、セッションが切れないことが確認できました。
どこをどう確認したら問題点が見つかるのか、
それすらよく分からない状況です。
また何か思い当たること等がありましたら、
是非アドバイスをお願いいたします。
アドバイスをどうもありがとうございます。
>他のスクリプトの GC が起動して
仰る通り、この点が怪しいなと感じました。
サイトのファイルを総点検し、
後日、その結果を「補足欄」にてお知らせしたいと思います。
この度は貴重なアドバイスをどうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのセッション有効期限について 5 2023/06/14 12:40
- 弁護士・行政書士・司法書士・社会保険労務士 ★行政書士試験の民法についての質問になります。 物権変動についての質問になります。 問 不動産の取得 1 2023/05/24 19:36
- その他(ネットショッピング・通販・ECサイト) URLの有効期限について 1 2022/09/10 16:41
- Chrome(クローム) 仕事で使っているGmailがログインできません。 ログインすると、 「組織がプロフィールの作成を求め 1 2022/06/16 08:40
- 消費者問題・詐欺 お金を取り返すことは可能でしょうか? 4 2023/01/07 13:17
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- 運転免許・教習所 免許の帯色について教えてください! 2 2022/05/07 14:39
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Excel(エクセル) エクセルでのINDIRECT関数の使い方について 3 2022/08/22 07:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ログイン画面をはさんだ後、自...
-
セッション変数にパスワードを...
-
セッションのスコープ(有効範...
-
複数ページでセッションを使わ...
-
ログインしたら他からログイン...
-
Sessionの上限について
-
switch()文で値の大小比較
-
Excel VBA:特定の文字列以降(...
-
IPアドレス変更方法
-
Dosブロンプトでtabを出力したい
-
現在時刻をyyyymmddhhmmss形式...
-
【C#】DataGridViewの最大列数...
-
スクレイピングに適した言語を...
-
「取得先」という表現について
-
excel access連携 このテーブル...
-
Yahoo! JAPAN IDを新規取得でき...
-
findstrのerrorlevel
-
EXCEL、マクロ-改ページ行番号...
-
バッチファイルでpingの結果を...
-
php history.back()の戻るボタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
Sessionの上限について
-
ログイン画面をはさんだ後、自...
-
完全なセッション破棄をしたい
-
セッション変数の命名規則
-
ログインしたら他からログイン...
-
セッション変数にパスワードを...
-
PHP cookieの値が更新されない...
-
$_SESSIONと、POSTやGETの違い
-
二重ログイン管理について
-
PHP SESSION変数を複数使用でき...
-
PHPでログイン人数を制限したい
-
セッションのスコープ(有効範...
-
PHPのセッション有効期限について
-
複数ページでセッションを使わ...
-
php4のセッション機能とブラウ...
-
セッション ID とセッション名...
-
PHPのセッションについて
-
フォームの入力値のセッション...
-
クッキーを使わないセッション...
おすすめ情報