[PHP-users 29196] setIdle でログアウトしたが、ブラウザ更新すると何故か認証されてしまいます。

佐本 達義 ttsamoto @ yahoo.co.jp
2006年 5月 12日 (金) 16:39:08 JST


samottyです。

現在、現在AuthクラスのsetIdle()で、アイドル時間オーバー
による自動ログアウトのテストを行っております。

しかし、
setIdle でログアウトしたが、ブラウザ更新すると何故か認証
されてしまいます。 
ユーザ名、パスワードは何も入力していないにもかかわらず、
何故か認証されてしまいます。
ソースは下記のものを使用しております。

setIdleメソッドがそういった仕様なのでしょうか?

たびたびすみませんが、ご教授いただけないでしょうか?
よろしくお願い致します。


auth1.php --------------------------------------------

<html>
<head><title>auth test1</title></head>
<body>
<?php
require_once('Auth/Auth.php');
require_once('auth_login.php');

define('DSN', 'mysql://root:is_180ts@localhost/user_db');

$options = array('dsn'=>DSN, 'cryptType'=>'none',
'db_fields'=>'user_id');
$auth = new Auth("DB", $options, 'auth_login');

//認証の有効期限を設定するコード
//カッコ内は秒数
//$auth->setExpire(300);

//ログアウト処理までのアイドル時間
//一定時間処理がなかった場合に自動的にログアウト
//カッコ内は秒数
$auth->setIdle(10);

$auth->start();
?>
<html><head><title>Perm example 1</title>
<meta http-equiv="Content-Type" content="text/html;
charset=euc-jp" />
</head><body>
<?php
if($auth->getAuth()) {
  print "認証に成功しました。<br />";
  
  //認証に関する情報を出力するコード
  print "<hr>"; print_r($_SESSION['_authsession']);
  
  //ユーザIDを出力するコード
  //print $auth->getAuthData('user_id');
}
?>
</body></html>
-------------------------------------------------------

auth_login.php ----------------------------------------

<?php

function auth_login($username, $status) {

  switch($status) {
  case AUTH_IDLED:
    $message = '長時間アクセスがなかったため認証をリセッ
トしました。';
    break;    
  case AUTH_EXPIRED:
    $message = '有効期限切れのため認証をリセットしました
。';
    break;
  case AUTH_WRONG_LOGIN:
    $message = 'ユーザ名またはパスワードが間違っています
。';
    break;
  case AUTH_SECURITY_BREACH:
    $message = 'IPアドレスまたはブラウザを検出されたため
認証をリセットしました。';
    break;
  default:
    $message = '';
    break;
  }
  print "<i>$message</i>\n";
  
  echo <<<EOS
<form method="post" action="{$_SERVER['PHP_SELF']}">
    <table border="0" cellpadding="2" cellspacing="0"
summary="login form">
    <tr>
    <td colspan="2"
bgcolor="#eeeeee"><b>ログイン:</b></td>
    </tr>
    <tr>
    <td>ユーザ名:</td>
    <td><input type="text" name="username"
value="$username" /></td>
    </tr>
    <tr>
    <td>パスワード:</td>
    <td><input type="password" name="password" /></td>
    </tr>
    <tr>
    <td colspan="2" bgcolor="#eeeeee"><input type="submit"
/></td>
    </tr>
    </table>
    </form>
    </center>
EOS;
}

?>
-------------------------------------------------------

環境:WindowsXP, Apache_2.0.58, php5.0.4, mysql4.0.26


--------------------------------------
Yahoo! JAPAN 10th Anniversary Special Feature
--- Enjoy Yahoo! Auction with Yahoo! Mail !! ---
http://pr.mail.yahoo.co.jp/auction/


PHP-users メーリングリストの案内