• 締切済み

セッションIDの削除について

session_set_cookie_params(1ヶ月); session_start(); を行った場合、webサーバーの/tmp内の 『sess_*****・・』 ファイルは、(ガーベッジ・コレクションを行わない場合)1ヶ月の有効期限が切れると、自動削除されるんでしょうか。

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

みんなの回答

回答No.1

ガベージコレクターを使わないと削除されないんじゃないでしょうか? 調べたことは無いですが、FATだと動かないとか言いますし。

white00000
質問者

お礼

ご回答頂きありがとうございます。 『sess_*****・・』 ファイルの中身を調べると有効期限の記述がなく、webサーバにて保存している『sess_*****・・』では、有効期限を把握していないんでしょうか。or webサーバーは、/tmp以外にて、クッキー情報を保存しているんでしょうか。また、ガベージコレクターは、何が行っているのでしょうか(apache?,php?)。

関連するQ&A

  • phpのセッションについて質問です

    phpで会員制サイトの制作を勉強中です。 pdoでmysqlデータベースに接続しています。 セッションの「session_set_cookie_params」について質問ですが、 session_set_cookie_paramsで有効期限を設定する場合、 ログイン時にsession_set_cookie_paramsでセッションの有効期限を設定し、 他のページではsession_start()さえ記述すれば、 有効期限を過ぎると勝手にセッション変数のデータを空にしてくれるのでしょうか? それとも全てのページにsession_set_cookie_paramsを書かなければならないのでしょうか? プログラムを書いている上でセッションの動作がおかしい(有効期限が過ぎてもログアウトしない)のでsession_set_cookie_paramsの記述がおかしいのかと思い、質問しました。 また、セッション変数の有効期限を変数毎に個別に設定して削除する方法はないのでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • sessionの生存時間

    こんにちは 最近PHPを始めました。 php4のsessionについて伺いたいのですが。 session_*関数で、/tmpに作られる、sess+sessionID と言うファイルは、いつまで有効なのでしょう? また、cookieにように生存期間を指定してやることは 出来るのでしょうか? よろしくお願いいたします。 #環境は、Linux & php4.01p12 & apache1.3.20です。

    • 締切済み
    • PHP
  • Windowsだとsession_set_cookie_paramsが

    Windowsだとsession_set_cookie_paramsが上手く動きません。 以前 http://okwave.jp/qa/q5387366.html でディレクトリ分けをしているときにセッションが混ざってしまうと相談したものです。 回答していただいたものを元にsession_set_cookie_paramsを使ってみたところセッションが混ざることがなくなったのですが、このコードをWindows(というかXampp for windows)で動かすとセッション情報を保存することが出来なくなってしまいます。 (具体的な挙動としてはログインフォームなのですが延々とログインできなくなってしまいました。) Windows版では動かせない関数なのでしょうか? それともphp.ini等に設定が必要でしょうか? windowsでうごかしたコードのセッション部分 if(isset($_REQUEST['PHPSESSID'])) { session_id($_REQUEST['PHPSESSID']); //Setting the same session id to Forums as in CRM $sid=$_REQUEST['PHPSESSID']; } session_set_cookie_params(time()+36000, "/pdt/test/", "localhost"); insert_charset_header(); きちんと動作する環境 OS: Linux CentOS5 PHP:5.3 独自ドメイン上で動かしている(上記コードのlocalhostの部分はそのドメイン名としている) 上手く動かない環境 OS: WindowsXP PHP: 5.2.9(Xamppで動かしています) テスト環境(ドメインは指定していないため上記コードのsession_set_cookie_paramsのホスト名の部分をlocalhostとしている) よろしく尾根がします。

    • ベストアンサー
    • PHP
  • utf8保存をするとsession_start()でエラーが出ます。

    PHP:バージョン 5.1.6 セッションを使ってログイン情報を保持したいのですが、 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Eclipse\workspace\ShopSystem\login.php:1) in C:\Eclipse\workspace\ShopSystem\login.php on line 2 と言うエラー情報が出てしまいます。 セッションが既に開始されているらしいのですが、他にセッションスタートを記述した場所がありません。 プログラムの文字コードをutf8にするとこのようになってしまうのですが、shift-JISやutf8nでは正常に動作します。 自力で思いつける解決作は文字コードを全部変えてしまうことなのですが、できればutf8で作りたいと思っています。 お願い致します。 プログラム <?php session_start();  //ログインページ require('config.php'); if($_POST['keep_login']!=''){     session_set_cookie_params(31536000);//31536000(1年間の秒数)=365(日)*24(時間)*3600(秒) }else{     session_set_cookie_params(0); } *略 ?> <html>

    • ベストアンサー
    • PHP
  • ■(ログイン)セッションの有効期限の設定法について

    いつも、お世話になっております。(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()」を格納し、 その時間をもとに、ログイン期限を設定し、 ログイン時からの経過時間と、その期限とを比較して、 ログイン状態を継続(延長更新?)させるか、切断するかを毎回判断させる、 なんていう方法もありそうですが、 その場合にしても、 結局は、サーバ側のセッションファイルの有効期限の持ちが悪ければ、 同様に、うまくいかないはずだと私は考えています。

    • 締切済み
    • PHP
  • セッションについて

    セッションの管理について疑問があって質問させていただきます。 PHPの単一サーバでのセッション管理であれば、$_SESSIONを利用すれば良いと理解しています。 例えば複数のサーバで運用する場合はクッキーを利用するという方向で良いでしょうか?$_SESSIONだとセッションの引き渡しはできないですよね。(?) ただし、お金があってロードバランサーを使った場合はできると理解しています。 複数のサーバで運用する場合、会員登録の機能ではDBと連携して 入力画面でクッキーを発行 setcookie("regist","hogehoge","有効期限を設定"); 確認画面 Cookieの値をDBと通信して確認 登録完了の画面で Cookieの値をDBと通信して確認 会員登録がうまくいっていれば setcookie("regist","","有効期限を巻き戻し"); として重複登録を防ぐ。 こんな感じで良いでしょうか。 間違い、誤解があれば教えてください よろしくお願いします。

    • ベストアンサー
    • PHP
  • 負荷分散におけるセッションIDの共有

    Webサーバ(apache1.3系)を冗長構成にしている場合、 PHPのセッションIDを使用してのセッションIDの共有は、どのような方法がありますでしょうか? (どっちに振り分けられても、セッションが切れない方法です。) ※DBを使用する方法以外でお願いします。また、モバイルにも対応したいので、Cookieに格納しない方法以外でもお願いします。 参考URL等がありましたら、教えていただけたらとおもいます。 (Java+Tomcatをには、セッションのレプリケーションの機能があることはわかりました。) ロードバランサーの設定にそのような機能がありましたら、教えていただきたいです。

    • 締切済み
    • PHP
  • セッションに関して質問が御座います、

    現在、ログイン関係のプログラムのテストをPHPにて製作しています。 PCと携帯電話に対応させるためセッションを状況によって使い分けるようにしました、 内容としては↓ (1)クッキーが使えるか判断する→使える場合は普通にセッションスタート。 (2)クッキーが使えない場合は40桁の0~9、a~b、A~Bの乱数を生成してセッションIDとしてセッションスタート。 以上の二つを行ってセッションをスタートさせる事にしました。 (1)の方は問題なく動作しましたが問題なのは(2)の方です。 ランダムな値をセッションIDにセットしてセッションスタート、同時にセッションに値を入れてセッションIDをGETで送信、 受け取り側ではGETでセッションIDを受け取ってそのIDでセッションスタートするのですがセッションに入れた値が上手く取れません、恐らく空になっていると思われます。 受け取り側の方でセッションをスタートさせた状態で「session_id()」を使い確認したところ設定したセッションIDは問題なく表示されています、 これはセッションスタートは問題なく行えたと考えて宜しいのでしょうか? また、セッションに値を入れる時も取り出す時も(1)と(2)は同じ方法です、違うのはセッションスタートの時だけです。 (ランダムな値をセッションIDにセット、GETでセッションIDを受け取った場合はそのセッションIDでセッションスタート) テストではAUはCookie使用可能だったので問題なし、DoCoMoではCookie使用不可なので動作せず、しかしサーバー環境によって正常に動作します。 一部のサーバーでは正常に動作するのでプログラム自体は問題無いと思うのですが……。 良い解決策などありましたら教えて下さい、宜しくお願い致しますm(_ _)m

    • ベストアンサー
    • PHP
  • インスタンスの生成について

    下記のクラスSC_SessionFactory_UseCookieを実装している場合、 $session = new SC_SessionFactory_UseCookie; を実行するとクラスSC_SessionFactory_UseCookieのinitSession()と useCookie()も実行され$session->useCookie() = trueの セッション開始session_start()が実行されるのでしょうか。 class SC_SessionFactory_UseCookie { function initSession() { session_set_cookie_params(0, "/", DOMAIN_NAME); // セッション開始 session_start(); } // Cookieを使用するかどうか function useCookie() { return true; } }

    • ベストアンサー
    • PHP
  • Cookie非使用のセッションについて

    携帯サイトを作成しているので、URLに直接IDを埋め込む形でセッションさせたいのですが、うまくいきません。 レンタルサーバ(heteml)には『php.iniの設定-session.use_trans_sid』が用意されているのですが、クッキー環境であればそちらを優先したいので、携帯サイト向けのファイルのソース上で何とかしようとしている所です。 そんな訳で、サーバーの『php.iniの設定-session.use_trans_sid』はOFFにした状態で **************a.php********************************** <?php ini_set("session.use_cookies","0"); ini_set("session.use_trans_sid","1"); session_start(); $_SESSION["test"] = "テストです"; echo "<a href=\"b.php\">セッションテスト</a>"; ?> ***************************************************** **************b.php********************************** <?php ini_set("session.use_cookies","0"); ini_set("session.use_trans_sid","1"); session_start(); echo $_SESSION["test"]; ?> ***************************************************** と、したのですがうまくいきません。 ini_set関数の使い方が間違っているのでしょうか? また、手動でIDを埋め込むやり方でも構いませんので、 ご存知の方いらっしゃいましたら宜しくお願いします!

    • ベストアンサー
    • PHP

専門家に質問してみよう