###自動セッションログアウトについてご質問です
管理画面にて、一定の操作等が行われなかった際、
自動的にログアウトさせる方法を教えていただきたいです。
現在、
ログイン画面
ログイン後のページ2〜3ページ作成
はしているのですが、
一定の操作を行わなかった際、ログアウトになりません。
色々調べてはいますが、
php初心者で関数に関する意味がいまいち理解に苦しんでおります。
ログイン画面もしくはログイン後のページに
「一定の操作が行わなかった場合」の
php分岐を記載しないと自動ログアウトは実行されないのでしょうか?
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答5件
0
ベストアンサー
phpの一番最初に
php
1ini_set( 'session.gc_maxlifetime', 60 ); // 秒(デフォルト:1440)
と設定したらセッションがデストロイされるまでの時間が変更できますので、これで対応してください。
p.s.
セッションのログアウトについて
実際に組み込むならこんな感じ?
php
1 2function __construct(){ 3 session_start(); 4 5 // セッションのライフタイム変更 6 ini_set( 'session.gc_maxlifetime', 60 ); // 秒(デフォルト:1440) 7 8 // セッションが存在していない(タイムアウトもしくはログアウトされている) 9 if(!isset($_SESSION['LOGIN_INFO'])) { 10 // ここにログイン処理を書く(ログイン画面に遷移させる) 11 12 // セッションが存在している場合はセッションのライフタイムを更新 13 } else { 14 unset($_SESSION['LOGIN_INFO']); 15 $_SESSION['LOGIN_INFO'] = true; 16 } 17} 18 19// ここからはこのページの処理 20
__constructはページ読み込み時に自動的に読み込まれるメソッドです
session_start()はセッションを起動するもので
ini_set( 'session.gc_maxlifetime', 60 );
でセッションの持続時間を変更出来るので一定時間ページ遷移されない場合はセッションがなくなってしまいます。
isset関数は中身がnull以外ならtrueが返ってきます。
unset関数は対象の変数の中身をnullにします。
要は何をやってるのか、なんですが
ログインしたときに$_SESSION['LOGIN_INFO'] = trueを宣言しておけば
ログイン証明のセッションが発行されるので、
それがあるかないかを判定して再度ログイン要求をかけるか判定させようとしています。
また、セッションの持続時間も変更してあるので、セッションが切れたらもちろんログイン証明がなくなるので再度ログイン要求させます。
一定時間操作が無ければ、ということだったので、別のページに遷移した際にログイン証明セッションを再発行してあげれば同様の動きになると思います。
投稿2017/09/14 07:50
編集2017/09/14 08:07総合スコア46
0
「自動ログアウト」をどのタイミングに行うかにもよると思います。
私の場合は、下記のように構築しています。
- 最終アクセス時間をセッションに保持
- 画面にアクセスする毎にセッションが切れていないか確認する
- 切れていればログイン画面へリダイレクト、切れていなかったら次のチェック
- セッションに保持した「最終アクセス時間」と「現在時間」を比べる
- 比べた結果、一定時間(定数とか設定ファイルで持っておく)を過ぎていたら、セッションを破棄してログイン画面へ
- 過ぎていなければセッションの最終アクセス時間を更新してアクセスした画面を表示
もし、画面アクセスなしに・・・となったらjavascriptのsetintervalでajaxにて上記チェックを行い、
一定時間経過していた場合にjavascriptでアラートを出しjavascriptでログイン画面に遷移させます。
投稿2017/09/14 07:50
編集2017/09/14 07:52総合スコア80888
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
Javascript で session の保持期間を操作する手法があるようです。
[PHP] sessionのタイムアウトをサーバー設定ではなく、プログラム設定で変更する方法
投稿2017/09/14 07:47

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

退会済みユーザー
2017/09/14 08:00

0
セッションの期限をきめておいて、setTimeoutでその期限以上たったタイミングで
そのページを再読込すれば、セッション切れとなるのでそれをキーに
ログイン画面にとばせばよいでしょう
投稿2017/09/14 07:46
総合スコア117667
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
php.iniにて
session.cookie_lifetime
の値を設定すれば、設定した時間でクッキーのセッションが削除されるので
再ログインが必要になります。
投稿2017/09/14 07:44
総合スコア883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/16 00:47