• 締切済み

自動ログアウト

ログインページを作っていまして、時間が経つと自動的にログアウトするようなページを考えています。 セッションのタイムアウト時間の変更はini_set関数でsession.gc_maxlifetimeの値を変更すればいいことがわかりましたが、上手く動作しません。 他に何か設定しなければいけないのでしょうか。 よろしくお願いします。 //テストのため、10秒後にタイムアウト ini_set("session.gc_maxlifetime","10");          ・          ・          ・ session_start();

みんなの回答

  • foreach
  • ベストアンサー率51% (43/84)
回答No.1

まず、上手く動作しないというのは、どういう風に上手くいかないのか書かないと第三者には分かりません。 なので、アドバイス程度しか出来ませんが、 session_start()前にini_setしているので書式はそれであっていると思います。 その10秒をもう少し余裕を持って30秒とかにしてもダメですか? また、session.gc_maxlifetimeはPHP_INI_ALLなので.htaccessでも設定が可能です。 php_value session.gc_maxlifetime *秒数* の書式で.htaccessを作成してアップしたら上手くいくかもしれません。 ただし.htaccessはサーバー環境に依存しますので、今回の稼働環境がレンタルサーバーだったとしてエラーが出たとしたら、そのサーバーでは使えないと思ったほうがいいかもしれません。

mura1905
質問者

お礼

セッション情報は、ただ放置しているだけは破棄されないことを知りませんでした。 新しくブラウザを立ち上げて、セッションを始動させると、古いセッション情報は設定した時間通りに破棄されました。 どうもありがとうございました。

mura1905
質問者

補足

回答ありがとうございます。 session.gc_maxlifetimeを30秒にしたり、.htaccessを作成しても設定した時間でログアウトできませんでした。 (.htaccessは作ったことないので、内容が合っているのかどうかわかりません) #.htaccessの内容 <IfModule mod_php4.c> php_value session.gc_maxlifetime "30" php_value session.gc_probability "100" </IfModule> php.iniで直接設定を変更しても、時間通りにログアウトできませんでした。C:\tmpにセッション情報が残ったままでした。 なにか根本的にやり方が間違っているのでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • phpのセションのタイムアウトについて

    os:ターボ8 PHP:4.2.3 phpのセションのタイムアウトについてご教授願えないでしょうか Q1.タイムアウトの初期値は変更できますか? php.iniの session.gc_maxlifetime = 1440 を session.gc_maxlifetime = 60 にしてhttpdを再起動して試してみたのですが1分以上放置してもセッション情報は残ったままでした。 これってどうなのでしょうか? Q2.プログラム内でタイムアウトの設定を確認するシステム変数はありますか? ちゃんとタイムアウトの時間が変わっているか確認したいのですが。 Q3.タイムアウトの時間を無限大にしてタイムアウトしない設定にする方法はありますか? 以上、個別でも結構ですのでお願いします。

    • 締切済み
    • PHP
  • 初歩的な質問 セッション管理について

    セッション処理をしたいと考えていますが、 分からない点が多く困っています。 したいと思っていることは、「ログイン」的な処理です。 訪問者がブラウザを閉じても、サイト設計者が設定した「期間」、 ログイン状態をキープさせておけるような仕様です。 ※よくあるタイプです。 (特段、難しいことや変わったことをしようとしてはいません。) ただ、ちょっと変わっている点は、ログインはパスワード無しで行います。 フォーム(POST)でボタンをクリックしたら、誰でもログインできるようなものです。 で、上記処理をする方法として、大きく分けて、 (1)クッキー($_COOKIE)を使う方法と、 (2)セッション($_SESSION)を使う方法とがあるように思っています。 (1)の方法だと、 データそのものをクライアント側に保存させるのでセキュリティ上、やや難があり、 (2)の方法だと、「キー(セッションID)」だけをやりとりするので比較的安全、 ということをよく耳にします。 ただ、パスワードを扱うわけではないので、この場合には、 (1)の方法でもアリな気がしています。 しかし、今後、パスワード形式に移行しないとも限らないので、 (2)を使った方法で話を進めたいと思います。 パスワードのやりとりがないのなら、(1)の方が断然楽でいいよ~ ということであれば、話は変わってきます。 その場合には教えて下さい。 (※質問文の中で、私は随所に変なことを言っている可能性がありますので、 適宜、ご指摘頂けると嬉しく思います。) 話を戻しまして、 ここからは、前述の(2)の方法で話を続けさせて頂きます。 セッション処理の流れについてですが、 セッションIDをクライアントに送りつけ、保存させる方法は、 session_start()をスクリプト先頭に書き、 $_SESSION['login'] = 'おまえはもう、ログインしてる…。'; と、どこかに書くことで、 この$_SESSION['login']値を保持している間、訪問者は、 サイト内のページを、ログインされた状態として閲覧できる と、私は考えています。 何か変なことを言っていましたら、ご指摘下さい。(★ポイント1) //----------------------------------- 次に、セッション保持期間の設定の方法についてですが、 ネット上で調べた所、 ini_set("session.gc_maxlifetime", "1440"); のように設定できると書いてありました。 このini_set()による設定が、どう作用するのか、 この点もよく分からずにいます。(★ポイント2) session.gc_maxlifetimeの設定自体は、スクリプト終了とともに、 Master Valueに戻されるようですが(PHPマニュアルより)、 私が気になっているのは、 そのスクリプトで生成したセッションの保持期間は、どうなっているのか? ということです。 ちょっと乱暴な書き方をしますが、 例えば、 php.ini上(つまり、Master Valueの設定値)では、 session.gc_maxlifetime:1440 というような設定 の場合に、 スクリプトAの中で、 ini_set("session.gc_maxlifetime", "~仮に24時間としておきます~"); のように書き、 そのあとに、 $_SESSION['login'] = 'おまえはもう、ログインしてる…。'; と書いた場合、 クライアントには、$_SESSION['login']のデータは24時間保持される、 ということでしょうか。 つまり、 スクリプト内に書いた、 ini_set("session.gc_maxlifetime", "~仮に24時間としておきます~"); という記述は、 そのスクリプトでセッションIDをクライアントに与える場合の「そのセッションIDの保持期間」のみ を設定できる、という理解でよろしいでしょうか。 当たり前のことをお聞きしているかもしれませんが、 どなたか、どうか、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • ログアウトを実行してもログアウトされていない。

    こんにちは、ログアウトについてお聞きしたのですが、 どなたかお力を貸してください。 ユーザーネームとパスワードでログインする会員サイトを作っています。 会員メンバーのみ閲覧できるページがあるというシステムです。 ログインをして会員ページを閲覧できるのですが、 「ログアウトボタン」を押してもログアウト処理がされず、 まだ会員しか閲覧できないページを見ることができる状態です。 見ることができます。 いままでは、 // セッションを壊す。 //setcookie ("USERNAME", ""); //setcookie ("PASSWORD", ""); と記述していましたが、うまくいきませんでした。 調べたところ // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } // 最終的に、セッションを破壊する session_destroy(); という書き方があるとわかったのですが、 ユーザーネームとパスワードを初期化するという文法と 書き方が分からず、未だに、ログアウトできない状態です。 文法と書き方をどなたか教えて頂けないでしょうか。 また、セッションを保つ時間の記述の仕方も教えて頂けないでしょうか よろしくお願い致します。

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

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

    • ベストアンサー
    • PHP
  • セッション時間について

    プログラム初心者です コアサーバーとゆうレンタルサーバーを使っています。 phpの設置しているディレクトリに自前のphp.iniを置けば反映されるらしいです セッション切れの時間をのばす方法を教えてください(自前でphp.iniを作る方法を教えてください) サーバーのphpinfo確認したら session.cookie_lifetime 0 0 session.gc_maxlifetime 1440 1440 になっていました 自前のphp.iniにsession.gc_maxlifetime = 3600と一行だけ記述するだけでできますか? それとも、php.iniにxamppにあるような設定をワラワラ書かないといけませんか? php.iniのパーミッションは何にしたほうがいいでしょうか?見えるとまずいですよね? よろしくお願いします  

    • ベストアンサー
    • PHP
  • セッションを保持する時間を確定する関数ってあるのでしょうか?

    タイトル通りなのですが、PHPでセッションを保持する時間を確定する関数ってあるのでしょうか? 検索すると、php.iniのsession.gc_maxlifetimeを指定すれば可能のようですが、PHPファイルにセッションの保持時間を違う物に指定したい場面がありますので、使用できません。 ここでは1時間、ここでは2時間、というようにPHP文中で指定する関数というのはありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 自動ログアウト方法を教えてください。

    現在動いているシステムに、新たに複数ログイン禁止の設定を追加したいと考えています。 それで、以下の流れでシステムを作成しようと考えています。 (1)フラグ設定用のファイルを用意して、ログインした時にファイルへフラグを立てる。 *データベースを使用できないので、ファイルを使用。 (2)フラグが立っていれば、それ以降のログインを禁止にする。 (3)フラグが立っていなければ、ログインを許可する。 *この時、ログイン情報をセッション変数に保存する。 (4)ログアウトする時に、ファイルに持たせているフラグを消去する。 *この時、ログイン情報をセッション変数から削除する。 (5)ログアウトせずに放置していた場合、一定時間を過ぎると自動でログアウトする。 ただ、この時分からない事がありまして、 「自動でログアウトする時に、フラグの削除処理とセッション変数の破棄の指示をどのようにして出すのか?」 また、 「ログアウトせずにブラウザを閉じても自動でログアウトできるのか?」 という2点に調べています。 上記2点のことでアドバイスを頂けないでしょうか? また、複数ログイン禁止の設定を行う際に、注意しておいた方がいい点などがあれば教えて頂けないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ログアウト後、リフレッシュしたい

    お世話になります。 現在jspで、ログアウトした後トップページへ戻る処理を作成中です。 [logout.jsp] <!-- トップページへ戻る --> <tiles:insert page="top.jsp" /> <!-- セッションのクリア --> <% session.invalidate(); %> 困っているのは、logout.jspからtop.jspへ遷移したとき、一部、古い情報が表示されてしまうことです(ログアウト前の情報)。 全ページ共通で使用しているヘッダーに、「ログイン・ログアウト」リンクを持っており、ログイン中には「ログアウト」と表示し、ログアウト中には「ログイン」と表示させるようにしています。 この部分が、logout.jspからtop.jspへ遷移したとき、最新の状態で表示されません・・・ログアウトしてtop.jspへきた直後にはまだ「ログアウト」となっています。ページをリフレッシュすると、「ログイン」となり、最新の状態が正しく表示されます。 キャッシュをクリアする方法か、top.jspへきたときに1回だけページをリロードする方法か、他によい方法をご存知であれば、教えてください。 よろしくお願いします。

  • Yahoo!のようなログイン・ログアウト

    PHP初心者のプログラマに仕事をさせています。 Yahoo!のようなログイン・ログアウトの機能 (一定時間立つと自動的にログアウトになる) を作ってもらろうと思っていますが、少し プログラマが悩んでいるようですので、参考に なるWEBページや書籍がありましたら、教えて いただけませんでしょうか? また、Yahoo!はクッキーとセッション両方を使って ログイン状態を管理していると思いますが、 私のこの見解は正しいでしょうか?(私はプログラマ ではありません) よろしければ教えてください。

    • ベストアンサー
    • PHP
  • PHPでセッションが切れない

    いつもお世話になります。 現在、練習用として管理画面を作成しています。 session.gc_maxlifetime=1440(24分)で設定しているのですが、一時間以上放置してもセッションが切れません。。 session.gc_maxlifetime以外に何か設定が必要なのでしょうか? PHPのバージョンは5.3.3になります。

    • 締切済み
    • PHP