#setlinebreak(on)
* PEAR::Auth ユーザー認証 [#l67269c4]

[[ログイン画面表示メソッド drawLogin>PEAR/Auth/drawLogin]]
[[ユーザー別認証>PEAR/Auth/_sessionName]]
[[次期バージョン PEAR::Auth 1.3.x>PEAR/Auth/1.3.x]]

** 概要 [#ta42c19a]

#htmlinsert(googleAdsense.html)
#ref(http://dozo.rgr.jp/img/img20_file.png,right,nolink,around,PHP::PEAR)

導入はとても簡単。
で、結構な種類の認証システムが利用可能。

(ノ・・)ン。。。。。。(((●コロコロッ

私は[[PEAR:http://pear.php.net/]]推進派。
何でもかんでもこれを使おうとします。
そして、手を抜きまくり。
(;^_^A アセアセ…
やっぱり[[PHP:http://www.php.net/]]でものを作るときは簡単でないとね。

[[PEAR::DB:http://pear.php.net/package/DB]]についてはそこそこ見かけるようになったので
そっちに譲ります。[[スタックアスタリスク:http://www.stackasterisk.jp/tech/php/searchAction.do?cid=33]]
で私も少し書いてますが。
(..;)(..;)

ユーザー認証はだいたい、
「プログラムが必ず呼び出す」ところに作成する。
それは[[PEAR::Auth:http://pear.php.net/package/Auth]]
http://pear.php.net/package/Auth
も同じ。

このパッケージのおもしろいところは、
- 初期値を変更するだけでログイン情報をいろんなところから取得できる(抽象化)
- ログイン画面を表示するところまでパッケージ化されている
- パスワードの暗号化(MD5,Crypt,ユーザー定義関数)に対応
といったところかなぁ。

ユーザーリストのデータベースにはいろんなものが利用できます。
- データベース Database
- ファイル     File
- メールサーバ IMAP, POP3, vpopmail
- UNIXユーザー SMBPasswd, LDAP, RADIUS
- XML通信      SOAP
(種類分けあってるかなぁ。 (..;) )

…で、ですねぇ。 
一番手っ取り早く構築するのはやっぱりデータベース。
デフォルトでデータベースを利用することになっている。
[[PEAR:http://pear.php.net/]]のデータベース抽象化クラスは
- [[PEAR::DB:http://pear.php.net/package/DB]]
- [[PEAR::MDB:http://pear.php.net/package/MDB]]

に対応している。
お好きな方をどうぞ。

ログイン画面はデフォルトで付属しています。
もちろん自身で作成することも可能です。
その場合
- ログイン画面を表示する関数を作成し関数名を指定
- drawLoginメソッドをオーバーライドした継承クラスを作る

のいずれかをすればできます。
ただ、制約条件があって、

- ユーザー名にあたるエレメント名が[username]で固定
- パスワードにあたるエレメント名が[password]で固定

です。

ソースコードはだいたいこんな感じ

 <?php
 require_once "Auth/Auth.php";
 $params = array(
  "dsn" => "mysql://dozo:desu@yoroshiku/ne", // PEAR::DB参照
  "table" => "myAuth", // テーブル名
  "usernamecol" => "myUserColumn", // ユーザー名にあたるカラム名
  "passwordcol" => "myPasswordColumn", // パスワードにあたるカラム名
  "cryptType" => "none", // 暗号化(デフォルトはMD5)
 );
 $a = new Auth("DB", $params /* ,  "LoginFuntion" */);// インスタンス生成
 $a->start();// 認証開始
 if (!$a->getAuth()){// 結果を判別
     echo "失敗";
     exit();
 }
 echo "成功";
 session_regenerate_id(); // セッション偽装防止
 ?>


バグ?
 criptType = none の時でパスワードが数字のみの時、
 型がint型になるため頭の0が使えなくなる。
-ss -- [[ss]] &new{2005-11-30 17:27:43 (水)};
-細かい事ですが。LoginFunctionのcが抜けていませんか? -- [[b]] &new{2006-02-06 14:36:38 (月)};

#comment


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Third Project
証券会社ランキング比較