- Home ›
- PEAR入門 ›
- ユーザー認証(PEAR::Auth) ›
- HERE
コンストラクタ
ではまずAuthクラスのコンストラクタから確認していきます。
Auth
Auth::Auth (mixed $storageDriver = "DB",
mixed $options = "",
string $loginFunction = ""
[, boolean $showLogin = TRUE])
認証システムのコンストラクタ
パラメータ:
string $storageDriver 使用すべきストレージドライバーの名前、もし
くは独自の Auth_Container オブジェクト
mixed $options ストレージコンテナに渡されるオプション
string $loginFunction ログイン画面を表示するユーザ定義関数の名前
boolean $showLogin ログインがオプションかどうかの定義
では引数について確認していきます。
ストレージドライバ
まず最初の引数で、認証を行う時にユーザー情報などがどこにあるかを指定します。例えばデータベースやファイルなどです。ストレージドライバの一覧は下記の通りです。
| ストレージの種類 | ストレージドライバ名 |
|---|---|
| データベース | DB |
| ファイル | File |
| SMBPasswd | SMBPasswd |
| IMAP | IMAP |
| LDAP | LDAP |
| POP3 | POP3 |
| RADIUS | RADIUS |
| SOAP | SOAP |
| vpopmail | vpopmail |
例えばデータベースを使って認証を行う場合には"DB"を最初の引数に指定します。(今後のサンプルはデータベースを使っていきます。)
オプション
2番目の引数ではオプションを指定します。オプションはストレージドライバ毎に異なっています。例えばデータベースを使う場合にはデータベースのテーブル名などですし、ファイルの場合はファイル名を指定します。
ここではデータベースを使う場合のオプションを見てみます。
| キー | 説明 | デフォルト値 |
|---|---|---|
| "dsn" | 有効で整形式の DSN | "" |
| "table" | 認証データが保持されるデータベースのテーブル名 | "auth" |
| "usernamecol" | ユーザ名が保持されるカラム名 | "username" |
| "passwordcol" | MD5 暗号化されたパスワードが保持されるカラム名。 32 文字以上を保持可能か確認してください。 | "password" |
複数の値を指定する必要がありますので、上記で記述したキーを使った連想配列を作成し、その配列をコンストラクタの引数に指定します。
PEAR::AUTHでデータベースを使う場合にあ、PEAR::DBを利用してデータベースに接続します。その為、オプションで指定するDSNはPEAR::DBで利用するDSNの形式で指定します。(PEAR::DBのDSN形式については『データベースへ接続』を参照して下さい)。
例としてMySQLを使う場合で、ローカルホスト内にあるMySQLデータベースの「authdb」データベースに対し、ユーザー名「authuser」パスワード「authpass」で接続する場合のDSNは下記のようになります。
mysqli://authuser:authpass@localhost/authdb
次にデータベース内で認証情報が格納されているテーブル名と、テーブル内のユーザー名とパスワードが格納されているカラムを指定します。
例として、先ほどのデータベース内に「authtable」を作成し、「username」と「password」というカラムを作成した場合のオプションは下記のようになります。(パスワードを格納するカラムは32文字以上格納できるカラムにしておく必要があります)。
$params = array(
"dsn" => "mysqli://authuser:authpass@localhost/authdb",
"table" => "authtable",
"usernamecol" => "username",
"passwordcol" => "password"
);
ログイン画面を表示するユーザ定義関数
次に実際にユーザーがログインを行う時に表示されるログインフォームを作成するための自分で作成した関数の関数名を指定します。
簡単な例としては下記のような関数を作成します。これはHTMLでフォームを記述するのと同じものです。
function loginFunction($username, $status){
print("<form method=¥"post¥" action=¥"test.php¥">");
print("<input type=¥"text¥" name=¥"username¥">";
print("<input type=¥"password¥" name=¥"password¥">";
print("<input type=¥"submit¥">";
print("</form>";
}
関数名は自由に決めて下さい。この関数は引数としてユーザー名とスタータス情報が渡されてきます。引数の使い方は後で詳しくみます。
ログインフォームについてはレイアウトなどは自由に決めることが出来ますが規則もあります。1つ目の規則はフォームの送信先は自分自身であること、2つ目はユーザー名とパスワードのフォームの名前はそれぞれ「username」と「password」にすることです。上記の例では、このPHPプログラムが記述されているファイル名が「test.php」の場合です。
コンストラクタを使ってAuthクラスのオブジェクトを作成する
では以上を踏まえてAuthクラスのオブジェクトを作成してみましょう。
<?php
require_once "Auth/Auth.php";
function loginFunction($username, $status){
print("<form method=¥"post¥" action=¥"test.php¥">");
print("<input type=¥"text¥" name=¥"username¥">");
print("<input type=¥"password¥" name=¥"password¥">");
print("<input type=¥"submit¥">");
print("</form>");
}
$params = array(
"dsn" => "mysqli://authuser:authpass@localhost/authdb",
"table" => "authtable",
"usernamecol" => "username",
"passwordcol" => "password"
);
$authobj = new Auth("DB", $params, "loginFunction");
?>
次のページでは実際に認証を開始する方法を見ていきます。
( Written by Tatsuo Ikura )
PHPBook