.




うぇブログ2
最新エントリ
トップ :  PHPメモ :  PEARメモ :  Auth : 

2005/08/12
カテゴリ : Auth

執筆者: itoh (10:54 am)
PEAR::Authを久しぶりに使おうと思って、なにげなくpear upgrade Auth.....

いまいち挙動がおかしい。
とハマり続けて5時間ほど。

pearの設定がpreferred_state betaになっていたのはいいとして、Authのソースを見たら全然コンストラクタが変わってる・・・・。

え、$storage_driverにオブジェクト入れられるのかよ!(1.2.3)
なんだよー、$optionsにDSNを入れたらだめなのか!(1.3)


・・・・使いたくなくなっちゃったよ。使うけど。

しかしPEARドキュメント、特に日本語版やばい。
これ、ほとんど「嘘」が書いてあるレベルになってるぞ。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (3823)
2004/10/17
カテゴリ : Auth

執筆者: itoh (2:57 am)
現在、使っている方法は次のコードをauth_login.incとかにして、認証が必要なページの最初の一行目でincludeしているだけ。

auth_login.inc
引用:


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

    
$params = array(
        
"dsn"=>"mysql://mysql_user:mysql_userpass@mysql_server/mysql_db",
        
"table"=>"mysql_table",
        
"usernamecol"=>"mysql_username_field",
        
"passwordcol"=>"mysql_password_field"
    
);

    
$loginauth = new Auth("DB", $params, "loginFunction", $optional = false);
    
$loginauth->setSessionname("loginauth");
    
$loginauth->setExpire(2400) ;
    
$loginauth->start();
    if(!
$loginauth->getAuth()){
        
header("Location:http://{$_SERVER['SERVER_NAME']}/login_failure.html") ;
    exit();
    }else{
        
$username = $loginauth->getUsername();
    
}
    

    function
loginFunction(){
    }

?>





解説:
変数$paramsはAuthモジュールで、データベースを認証として使う場合のパラメータを配列で設定。
dnsは、DBサーバに繋ぐ時の情報。上記は、mysqlを例にとっているけど、これがpgsqlでも大差なし。
tableは、ユーザー名とパスワードが書いてあるテーブル。
usernamecolは、上記テーブル中でユーザー名として使いたいフィールド。
passwordcolは、上記テーブル中でパスワードとして使いたいフィールド。ただし、生のパスワードが書かれているわけではないことに注意。md5で暗号化されているパスワードが入っていること。つまり、登録の時にmd5暗号化しておく必要がある。
実は、ここで引っかかって???となった経験あり。


$loginauth = new Auth("DB", $params, "loginFunction", $optional = false);
で、Authクラスのオブジェクトを作っている。
引数について
"DB"は、データベースを認証として使うということ。
$paramsは、上記
"loginFunction"は、ログインの時に使うフォームのHTMLを出力する関数。
$optionalは、上記のloginFuntionを出力するかしないか。falseだと出力しない。自分は純粋に認証機能だけを欲したのでloginFunctionは何も無いし、$optionalもfalseで。

で、ログインフォームは2つのinputがあれば良い。action先はこのlogin_auth.incをincludeするphpファイルなら何でも良い。
2つのinput type="text"は、ユーザー名を入力させるところは、name="username"で、パスワードを入力させるところは、name="password"でなければならない。これは、Authの仕様。

setSessionnameメソッドは、セッションの名前を変更する。デフォルトならphp.iniにあるセッション名のデフォルト値(PHPSESSIDなど)。
setExpireメソッドは、認証セッションの有効時間を設定する。
startメソッドで、認証の開始。最初のみ、データベースに接続をしているみたいだ。
getAuthメソッドで認証の実行。認証されればtrueを返す。この例では、認証されなかったらリダイレクトするようにしている。
認証されたら、getUsernameメソッドでユーザー名を取っている。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (6786)



 





メインメニュー

カテゴリ一覧

Google Adsense

うぇブログ カレンダー


XoopsCube Ring
Amethyst Blue - BULLETIN


.