Auth で 独自認証フォーム[Pear::Auth]
Pear の Auth は、ユーザー認証や認証用のフォームを作成することまでできますが、 独自の認証フォームを使用することもできます。
<?php
require_once "Auth/Auth.php";
function drawLogin($username, $status, $objAuth) {
if (isset($_SERVER)) {
$server = $_SERVER;
}
else {
$server = $GLOBALS['HTTP_SERVER_VARS'];
}
echo '<form method="post" action="' . $server['PHP_SELF'] . '">' . "\n";
echo '<label for="username">ユーザー名:</label>';
echo '<input type="text" name="username">' . "\n";
echo '<label for="password">パスワード:</label>';
echo '<input type="password" name="password">' . "\n";
echo '<input type="submit" value="ログイン">' . "\n";
echo '</form>' . "\n";
}
// Authオプション
$params = array(
'dsn'=>"mysql://username:password@localhost/database",
'table'=>"usermng", // テーブル名
'usernamecol'=>"username", // ユーザ名の列名
'passwordcol'=>"password", // パスワードの列名
'cryptType'=>"md5", // パスワードの暗号化形式
);
$objAuth = new Auth("DB", $params,"drawLogin");
$objAuth->start();
if($objAuth->getAuth()) {
echo "ようこそ!" . $objAuth->username . "さん<br>";
// メールアドレスを取得。
echo $objAuth->getAuthData('email');
}
?>
まず、ログイン用のフォーム(HTML)を出力する関数を作成します。 ここでのポイントは、ユーザーとパスワードの入力用要素のname属性が username と password でなくてはいけないと言う事です。
次に、コンストラクタの引数にログイン用のフォーム(HTML)を出力する関数をコールバック関数として渡します。 受け取れる値は、ユーザー名、ステータス、Authオブジェクトになります。
ステータスとして定義されている定数は、次のようになります。
- AUTH_IDLED :設定されたセッション待機時間が経過した
- AUTH_EXPIRED :設定されたセッション持続時間が経過した
- AUTH_WRONG_LOGIN :ユーザー名又はパスワードエラー
ログインの状態は、セッション情報に保持されます。 デフォルトでは、セッション内に_authsessionという配列を作成します。