2007年11月13日火曜日

 

PEAR::Auth認証とログアウト


<?
  require_once("Auth/Auth.php");

  session_cache_limiter("nocache");
  session_cache_expire(30);//キャッシュの有効期限*
  session_start();*
/*       Pear::Auth認証時に呼び出す関数      */
  function loginFunction($usr,$status){
    switch($status){
      case AUTH_IDLED:
      case AUTH_EXPIRED:
           echo "認証期限が切れました。
再ログインして下さい。"
; break; case AUTH_WRONG_LOGIN: echo "USER ID / PASSWORD が間違ってます。"; break; default: break; } } /* 認証に使われるパラメータ */ $params=array( "dsn"=>"mysql://user:password@localhost/database",//DBの種類://DBユーザ:DBパス@DBサーバ名/DB名 "table"=&gr;"table",//ログインのIDとパスワードがあるDBテーブル "usernamecol"=>"username",//ID入力フォーム "passwordcol"=>"password",//パスワード入力フォーム "db_fields"=>"*"//DBテーブルのフィールド ); $myAuth=new Auth("DB",$params,"loginFunction"); /* ログアウト処理 */
if($_POST["logout"] && $myAuth->checkAuth()){ $myAuth->logout(); $_SESSION=array();//セッションを初期化* /* セッションクッキーを無効にする */ if (isset($_COOKIE[session_name()])) { setcookie(session_name(), "", time()-42000, "example.com/admin/"); } session_destroy();//セッションを破壊* echo "ログアウトしました"; }
$myAuth->start(); /* ログイン処理 */ if($myAuth->getAuth()){ $_SESSION["username"]=$myAuth->getAuthData("username");* $_SESSION["id"]=$myAuth->getAuthData("id");* session_write_close();//セッションに保存* }else { //ログイン画面の表示とか } ?>

PEAR::Authを使った認証のプログラムは、他のサイトやマニュアルでも一緒だと思います。
ログアウトに関しては検索しても見つかりません。PEAR::Auth->logout()を呼び出しただけでは意味がなく、セッションを使っていればセッションデータとクッキーを消去しなければいけません。
また、session_cache_limiter("nocache")の設定がなされていないとログアウトした後もブラウザの戻るボタンでキャッシュが表示されてしまいます(デフォルトの設定では大丈夫)。
*がついてる行は直接Auth認証には関係有りません。

参考書

PEAR入門 PHP標準ライブラリを極める!
PEAR入門 PHP標準ライブラリを極める!

ラベル: ,


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google