重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

phpでログインページを作ってます。
「現在のログイン人数」を調べる方法として、ログインすると生成されるセッションデータの数でそれを表示しようと思ったのですが、ログアウト(またはウィンドウを閉じた)してもセッションデータが残ってしまいます。ログアウトならdestroyで消去するという手もありますが、ウィンドウを閉じた場合だとプログラムが働かないのでデータを消せません。

セッションデータが必要なくなったとき、それを削除するようにするにはどう設定したら良いのでしょうか?

A 回答 (2件)

セッション破棄時間設定は、php.iniの設定にあるけど



session.gc_maxlifetime
「データが 'ごみ' とみなされ、消去されるまでの秒数を指定します。 ガベージコレクション (ごみの収集) は、 セッションの開始時に行われます。」(マニュアルから引用)
初期値のままなら 1440秒=24分
http://php.s3.to/man/ref.session.html

参考URL:http://php.s3.to/man/ref.session.html
    • good
    • 0

1)ログアウト


ログインの時にセッションを生成しているのならば、ログアウト時に破棄(destory)するのが通常のやり方なんじゃないでしょうか。

2)ウィンドウを閉じた場合
これは諦めるしかないと思います。設定した時間が経てば、セッションは自動破棄されるわけですし。

どうしてもやるのならば、JavaScriptでウィンドウクローズの際に、サーバ側に閉じたことを通知する方法があります。でも、ユーザが複数のウィンドウを起動している際に、一つを閉じただけでログアウトしないようにするのは困難です。また、ユーザが強制的にブラウザのプロセスを落とした場合は、サーバ側に通知されません。

逆のアプローチとして、JavaScriptから、定期的(毎分など)にブラウザが「生きていること」をサーバに通知する方法があります。そのサイトのページを開いている全てのブラウザウィンドウが閉じられたり、ブラウザが落ちた場合には、「生きている」通知が来なくなるので、それでセッションを破棄します。

どちらにしろ面倒な方法です。

この回答への補足

回答ありがとうございます。
「設定した時間が経てば」とのことですが、その設定はどのようにするのでしょうか?その設定次第で解決できる気がするのですが・・・

補足日時:2007/01/17 18:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!