いつも、お世話になっております。(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と、POSTやGETの違い
-
セッション変数にパスワードを...
-
共用サーバでのセッション管理...
-
セキュリティを強固にするには?
-
ブラウザを閉じた後もセッショ...
-
特定のページからのみのアクセス
-
!issetの冒頭の!ビックリマー...
-
COOKIEを用いたセッション管理
-
学校の授業で困っていることが...
-
セッションハイジャック(セッ...
-
firefoxとIEでセッションの動き...
-
携帯電話対応のカートって??
-
自動ログイン機能
-
セッション
-
register_globalsがOFFの状態で...
-
複数のサーバで運営する場合の...
-
セッション変数について
-
セッションのスコープ(有効範...
-
URLのパラメータをGETのままで...
-
session_is_registered関数が、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
URLのパラメータをGETのままで...
-
PHPのセッション有効期限について
-
ブラウザを閉じた後もセッショ...
-
Sessionの上限について
-
!issetの冒頭の!ビックリマー...
-
ログインしたら他からログイン...
-
セッション ID とセッション名...
-
session_start()で生成されるセ...
-
ログインした掲示板ですが、直...
-
【PHP】SESSION変数の競合を...
-
セッションを維持したまま、サ...
-
セッションのスコープ(有効範...
-
「ログイン機能を持たせる」説...
-
PHP cookieの値が更新されない...
-
別ブラウザ間でセッションの値...
-
リアルタイムカウンター
-
session_cache_limiterの使い方
-
SESSION情報は、ブラウザを起動...
-
セッション変数の命名規則
-
セッション変数にパスワードを...
おすすめ情報