認証ユーザーのタイムアウトを設定する (PHP+PEARでウェブサービス勉強記録・2)

今回は、PEAR::AUTHを利用してログインしたユーザーの、タイムアウト処理です。

PEAR::AUTHでログインしたユーザーのタイムアウト処理

ウェブサービスを利用していると、必ずといっていいほど、ログイン済みユーザーのタイムアウト処理を行っています。

タイムアウト処理は、大きく分けると、次の2つがあると思います。

  • ログイン後、一定時間が過ぎたら自動的にログアウトする
  • ログイン後、なにもしない時間が一定時間過ぎたらログアウトする

 

上記の機能をどのように実装するか調べてみたところ、PEARでは専用のメソッドがあり、いずれも1行ずつ書き加えるだけで済んでしまうことがわかりました。

  • setExpire セッションの有効期限を設定
  • setIdle 認証後、設定した時間以上、何もしなかった場合、自動的にログアウト処理

というわけで、前回のログイン用ファイルを修正したのが以下。とりあえず、アイドルタイムは10分、セッションの有効期限は4時間としました。


<?php

require_once("Auth/Auth.php");
function loginFunction($usr,$status){

	require_once("loginForm.php");
}

$params = array(

	"dsn" => "mysqli://pear:peartest@localhost/pear",
	"table" => "auth",
	"usernamecol" => "username",
	"passwordcol" => "password",);
	
$myAuth = new Auth("DB",$params,"loginFunction");

$myAuth->setExpire(2400,FALSE); 
$myAuth->setIdle(600,FALSE);
$myAuth -> start();

if($myAuth->getAuth()){

	$display_name = $myAuth->getUsername();
	
	print("$display_name"."さん、こんにちは。<br />");
	print("認証済みです。<br />");
	print("<a href=\"logout.php\">ログアウトする</a><br />");
	print($_SESSION["hogehoge"]);
}

?>

試しに、setIdleを5秒にしてみると、ログインした後、少しぼーっとしただけで、あっという間にログアウトしてしまいました。


$myAuth->setIdle(5,FALSE);

setIdle_alert

タイムアウト処理はこれでおしまいです。

次回は、ユーザー情報の登録について勉強したいと思います。