認証済みかどうかの確認

広告

ここでは認証済みかどうかの確認を行います。Authクラスの「getAuth」メソッドを使います。

戻り値:
  ユーザが既に認証済みならば、関数は TRUE を返します。 そうでなけれ
    ば、FALSE を返します。

「start」メソッドで認証を開始した後で「getAuth」メソッドで認証が行われたかどうかを確認します。

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

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

$authobj->start();

if ($authobj->getAuth()){
    print("認証済みです");
}else{
    print("認証されていません");
}

最初に表示された時は認証が行われていませんので「getAuth」メソッドはFALSEを返します。そして表示されたログインフォームでユーザー名とパスワードを入力しフォームを送信すると、フォームの送信先は同じページですので最後このページが表示され、認証が通っていれば「getAuth」メソッドは今度はTRUEを返します。

サンプルプログラム

ではこの段階で一度試してみます。まだデータベースの用意などはしていませんので実際の認証確認はできません。

sample4-1.php

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

require_once "Auth/Auth.php";

function loginFunction($username, $status){
    print("<form method=¥"post¥" action=¥"sample4-1.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();

if ($authobj->getAuth()){
    print("認証済みです");
}else{
    print("認証されていません");
}

?>

</body>
</html>

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

PEAR::AUTHで認証されたかどうかの確認

では次のページで実際にデータベースを用意して認証処理を行ってみましょう。

( Written by Tatsuo Ikura )