• 締切済み

PHP 不要なセッションファイルの対応方法について

セッションファイルの管理方法について、どなたかご教授願います。 現在セッションファイルを生成し、ログアウト処理時に、 session_destroy()関数を使用しています。 通常にログアウト処理が行われれば、良いのですがブラウザ事態を 閉じた場合、セッションファイルは残ったままになります。 PHPやApacheの設定などで簡単に管理できる方法は無いものでしょうか? なるべく、バッチやモジュールを追加しない形で進めていきたいと思っています。 以上です。

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

php.iniの session.gc_probability session.gc_divisor session.gc_maxlifetime で調整するのはだめでしょうか

kukulukan
質問者

お礼

php504さん 自己解決できました。 参考URL:http://www.hizlab.net/app/portal.html 希望通りに解決でき、満足しております。 ありがとうございます。

kukulukan
質問者

補足

php504さん、迅速な回答誠にありがとうございます。 例えば以下のような設定だと、 session.gc_probability=1 session.gc_divisor=100 session.gc_maxlifetime=1440 1/100の確立で、セッションファイルの更新日時が1440前の ファイルを削除すると言った意味合いで間違いないでしょうか?

関連するQ&A

  • [PHP]セッション破棄について

    はじめまして。 phpを始めて1週間の初心者です。 現在、ホームページでログイン処理とログアウト処理をphpのセッションを使って作成しています。 今回質問させて頂くのはログアウト処理についてです。 ログアウト処理をでセッションを破棄する際に http://oshiete1.goo.ne.jp/qa3224862.html を参考にして下記の処理を行わせています。 -------------------- logout01.php -------------------- <?php session_start(); $_SESSION = array(); if(isset($_COOKIE[session_name()])){setcookie(session_name(),'',time()-4200,'/');} session_destroy(); header("location: http://~トップページのURL~/"); ?> -------------------- 確認をしたところ、ログインしたユーザの情報は削除されているようでした。 また、http://oshiete1.goo.ne.jp/qa3224862.htmlを参考に下記のようなログアウト処理も行わせてみました。 -------------------- logout02.php -------------------- <?php session_start(); unset($_SESSION['access']); header("location: http://~トップページのURL~/"); ?> -------------------- 同じく確認したところ、ログインしたユーザ情報は削除されているようでした。 -------------------- 環境 -------------------- <サーバ> 【OS】 windows XP(テスト環境)、CentOS 5.2(公開環境) 【PHP】 5.2.6 【Apache】 2.2 <クライアント> 【OS】 windows XP 【ブラウザ】 Firefox 3.0.8 IE 7 -------------------- -------------------- 質問 -------------------- (1)logout01.phpとlogout02.phpの違いは何でしょうか。 (2)「unset($_SESSION);」は使用すると「$_SESSION」が使えなくなるとのことですが、  それはphpを再インストールしない限りは使えなくなるということでしょうか。  それとも、ブラウザを再起動すれば使えるという意味でしょうか。 (3)「unset($_SESSION);」と「unset($_SESSION['access']);」では何が違うのでしょうか。 (3)セッションを使用するとサーバ側にセッションIDを保存したファイルが保存され、  クッキーがクライアント側に保存されるとのことですが、logout01.phpとlogout02.phpを  実行した場合、サーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 (4)セッションの有効期限を指定していないため、logout01.phpとlogout02.phpを実行せずに  ブラウザを終了させた時もログインしたユーザ情報は削除されているようでしたが、  この場合もサーバ側のセッションIDを保存したファイルとクライアント側のクッキーを  保存したファイルは削除されているのでしょうか。 初歩的な質問で申し訳御座いませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • セッションデータが残ってしまう

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

    • ベストアンサー
    • PHP
  • PHPのセッション終了について

    PHPのセッション終了について http://c-brains.jp/blog/wsg/08/05/22-193020.php こちらのサイトでPHPを勉強しています。 セッションについてなのですが、セッションの開始と関数の働きはつかめたのですが、セッションの終了について不明な点があります。 <?php // セッションの開始 session_start(); // セッション変数の初期化 $_SESSION = array(); // セッションファイルの削除 session_destroy(); ?> この部分なのですが、セッション変数の初期化のみの記述では何がいけないのかが分かりません。 $_SESSION = array(); のみの記述で試してみたところ、$_SESSION に含まれていたキーを呼び出しても中身を出力しなかったので、ちゃんと中身は消えたと思うのですが、この場合、session_destroy()を実行する意味はあるのでしょうか? 何卒ご教授いただけますようお願い致します。

    • ベストアンサー
    • PHP
  • PHP SESSION変数の削除について

    PHPでブラウザを×で閉じた場合、SESSION変数 の廃棄はどうすればよいのでしょうか? ガーペジコレクション(PHP.INI等の設定)に任せておけばよいのでしょうか? ちなみにログアウトの際は下記のプロシジャを実行しています。 ----------------------------- <?php session_start(); // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // 最終的に、セッションを破壊する session_destroy(); ?> -----------------------------

    • 締切済み
    • PHP
  • ログアウトする際にセッションファイルを削除したい

    PHPでWEBアプリケーションを作成しています。 携帯対応にするために、フォームを使用できないところは セッションIDをURLに付加しています。 ログアウト後(ユーザーがログアウトボタンをクリック)は、戻るボタンをクリックしても「ログインしていません」のエラーメッセージが表示されるようにしたいのです。 現在、ログアウトする際、すべてのセッション変数を削除しているのですが、ブラウザの戻るボタンをクリックすると、もとの画面が表示されます。 その画面にはセッションIDを埋め込んだリンクがあり、 クリックすると正常にリンク先に移動してしまいます。 セッションファイルが残っているために、セッションが継続されたような状態になってしまっているのではないかと思います。 セッションファイルを削除すれば、上記エラーメッセージが表示されるのです。 そこで、ログアウト時にセッションファイルを自動的に削除してしまいたいのですが、どのような方法をとればよいのでしょうか? やっぱり普通にセッションファイルの場所を取得して、削除するしかないのでしょうか? 教えてください。 以下、ログアウト時の処理です。 // セッションの初期化 session_start(); // セッション変数を全て解除する $_SESSION = array(); (session_id('')); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (isset($_COOKIE[session_name()])) {   setcookie(session_name(), '', time()-42000, '/'); } // 最終的に、セッションを破壊する session_unset(); session_destroy();

    • 締切済み
    • PHP
  • セッションファイルのパーミッション変更

    いつもお世話になっております。 PHP+Vine Linuxでプログラミングをしている大学生です。 よく空メール送信→返信→登録というサイトを作りたいのですが 例えばtouroku@hoge.comに空メール送信 メール受信→.forward→PHP(CLI)に渡して コマンドラインでセッションファイルを作成しましたが・・・ ブラウザ経由だと"apache"の権限でファイル作成&読み込みですが .forward経由だとメールのアカウント(touroku)のユーザーの所有権+読み込み権でセッションファイルが作成されてしまい。 "apache"の権限で読み込むことができません。 したがってセッションが共有できなくなってしまいます。 (;;) 対策としてsystem関数とかつかってセッションのディレクトリ以下のファイルをそのつど"apache"に変更するという方法は思いつきましたが パスとかソースファイルに書くことになりますし、ルート権限に毎回移行しないといけないのはものすごく効率が悪いと思います。 .forwardでのセッションにアドレス保存する際に 所有者を"apache"にしてセッションファイルつくる スマートな方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • セッション機構とPHPでの実装

    1. PHPで言うところのセッションとは、  クライアント毎にアカウントされた一連の  アクセス-レスポンス過程 2. session_start();  により、セッションを開始する 3. $_SESSIONによりセッションデータとして外部より取得 4. セッション終了時には,デフォルトでは30min  $_SESSIONによりセッションデータは解放される これは、PHPにおける大まかな一つのセッションの利用形式だと思いますが,実際の機構は次のようなものだと思います.  サーバがセッションを開始する   ↓  セッション管理用一時ファイルを生成   セッションIDを生成,ファイルに入れる  アクセス時刻;セッション変数;代入値 を蓄積    その際にセッションIDはHTTP転送によるパケットのヘッダに付けられるのでしょうか?それによってセッション管理されていることを判別しているのでしょうか?  

    • ベストアンサー
    • PHP
  • Perlでのセッション管理と不要セッション削除について

    いつもお世話になっています。 Perlにてセッション管理(ログインして、サイト内はユーザーIDなどを持ちまわるような)を行おうとしています。 CGI::Sessionを使用して実現できると思っているのですが、 疑問があります。 セッション情報の持ち方は、サーバー内にファイルか、DBに格納する ことになると思いますが、不要になったファイルやレコードは、 みなさんどうされているのでしょうか? (ログアウトボタンがあっても、ブラウザの閉じるボタンを押される ケースが多いと思いますので、必ずdelete()はできないですよね?) 削除バッチなどで定期的に削除することを考えていますが、 もっとスマートなやり方があればご教示いただければと思います。 よろしくおねがいします。

  • セッションファイルの権限

    PHP5にてセッションファイルをserialize()した場合の質問です。 この関数でできるファイルはapacheのread/write権限しかついていないのですが、設定か何かでread権限を拡張することはできないでしょうか? (php.iniには該当するような設定はありませんでした) 自分ではサーバのroot権限を持っていないため、セッションファイルの中身を確認してデバックができなくて困っております。 ご存知の方、ご教授ください。

    • 締切済み
    • PHP
  • セッションの有効期限の設定方法とログアウト方法

    会員システムをPHPのセッション管理を使って作っているのですが、 1.セッションの有効期限の時間を変更するためにはsession_cache_expireを使うんだと思うんですが、これは全ページのsession_start()の前に書かないといけないのでしょうか? それとも、ログインするときに必ず通るPHPファイルに書いておけば大丈夫なのでしょうか? 2.会員ログアウトをする場合は、 unset($_SESSION['****']); でログインするときに入れた変数をunsetするだけで大丈夫なのでしょうか? もっと他に一般的な方法があったりするのでしょうか? どちらかだけでもお分かりの方がいれば教えていただければうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう