スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【PHP】ログインタイマー

自分用のメモです。今後使えそうな事を書いていきます。

ココで言うログインタイマーとは、ログイン状態の有効時間このと。一定時間を過ぎたら自動的にログアウトする。正確に言うと、一定時間過ぎてからアクセスするとログアウト状態になる。やり方は、サーバのセッション有効時間を設定したり、cookieを使ったり、色々あるみたいだけど、一番お手ごろな方法で試してみました。

↓↓↓簡略化したサンプルソース
【login.php】

//ログイン時
$セッション変数 = $現在の時間;

-----------------------------------------------------------------
【logout.php】

//ログアウト時
//セッション変数の開放

unset($セッション変数);

-----------------------------------------------------------------
【judge.php】

//セッション変数を持っているか(=ログインしているか)
if(isset($セッション変数)){
 //ログインしてから現在までの時間が有効時間より大きいか
 if($現在の時間 - $セッション変数 > $有効時間){
  //セッション変数の開放
  unset($セッション変数);
 }
 else
 {
  //有効時間の延長
  $セッション変数 = $現在の時間;
 }

}
else
{
 //ログインしてない時
}

-----------------------------------------------------------------
スポンサーサイト

「【PHP】ログインタイマー 」へのコメント

セッション変数にログイン時の時間を格納するんじゃなくて
制限時間を入れるようにするとスマートになると思われ。

// 有効時間は1時間
$_SESSION['limit'] = time()+3600;

そうするとjudge.phpの
if($現在の時間 - $セッション変数 > $有効時間)

if(time() > $_SESSION['limit'])
にできるので毎回引き算する負荷を減らせます。

*

次にコード数を減らす方法として三項演算子を使いましょう。

具体的には有効期限切れの時にunsetで開放しないで
$_SESSION['limit'] = 0;
とする。

そうすると

// ログインしてないか時間切れならログインページへGO!
if( !isset($sess['limit']) || $sess['limit'] <= 0){
 // 処理
}

// 時間切れにするか延長するか(三項演算子使う)
time() > $sess['limit'] ? $sess['limit'] = 0 : $sess['limit'] = time()+3600;

というわけでif文使わないで数行で同じ処理ができるはず。

Enjoy!

最初に制限値を足しておいて、あとは比較するだけですね。ずいぶんスマートになりますね!

見直してみるとスリムに出来そうな所たくさんあると思います。とりあえず力業でどうにかしてるので(^-^;

beautiful!

コメントの投稿


管理者にだけ表示を許可する

「【PHP】ログインタイマー 」へのトラックバック

http://craws.blog72.fc2.com/tb.php/209-8c647b95


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。