認証の開始

次に認証を開始します。Authクラスの「start」メソッドを使います。

start
void Auth::start()
認証プロセスを開始します。

実際の使い方は下記のようになります。

$authobj = new Auth("DB", $params, "loginFunction");

$authobj->start();

認証を開始するとAuthクラスのコンストラクタで指定した認証用の関数が呼び出されログインフォームが表示されます。注意する点はログインフォームは表示されますが、表示されるだけでそこで処理が止まるわけではなく、その後に記述されたコードは実行されていきます。

$authobj = new Auth("DB", $params, "loginFunction");

$authobj->start();

print("この部分はすぐに実行されます");

その為、ユーザー認証が通った後にだけ表示させたい内容は、次のページで見る「getAuth」メソッドを使って認証が通ったかどうか条件分岐した中に記述する必要があります。

サンプルプログラム

ではこの段階で一度試してみます。まだデータベースの用意などはしていませんのでログインフォームが表示されるだけです。

pearauthtest1.php

<html>
<head>
<title>PHP認証テスト</title>
</head>
<body>
<?php

require_once "Auth/Auth.php";

function loginFunction($username, $status){
    print("<form method=\"post\" action=\"pearauthtest1.php\">");
    print("<table>");
    print("<tr>");
    print("<td>ユーザー名</td>");
    print("<td><input type=\"text\" name=\"username\"></td>");
    print("</tr>");
    print("<tr>");
    print("<td>パスワード</td>");
    print("<td><input type=\"password\" name=\"password\"></td>");
    print("</tr>");
    print("<tr>");
    print("<td colspan=\"2\"><input type=\"submit\"></td>");
    print("</tr>");
    print("</table>");
    print("</form>");
}

$params = array(
    "dsn" => "mysqli://authuser:authpass@localhost/authdb",
    "table" => "authtable",
    "usernamecol" => "username",
    "passwordcol" => "password"
);

$authobj = new Auth("DB", $params, "loginFunction");

$authobj->start();

print("認証開始後、処理はすぐ次へ移り、この部分も表示されます");
?>

</body>
</html>

上記をWWWサーバに設置しブラウザで見てみると下記のように表示されます。

PEAR::AUTHで認証開始