コードを舐める日々

わからないことがわからないことをしる日々

Authむずい。。

一日1時間くらいは学習時間に割り当てているが、むずい。
うちの頭どうなってるんだろ。orz

PEAR::Authを使っていろいろ調べておいていじってようやく出来たのがこれ。

ログインとログアウト機能のみ。
DBにはIDとパスワードを格納できるように作成。
DB作成は下記のページが参考になる。
PEAR::Authを使って認証する。 - カサヒラボ

<?php
require_once "Auth/Auth.php";

function loginFunction($username, $status){
    switch($status){
      case AUTH_IDLED :
      case AUTH_EXPIRED :
        $msg = "ログイン期限が切れています。再度ログイン処理を行ってください。";
        break;
      case AUTH_WRONG_LOGIN :
        $msg = 	"ユーザID/パスワードが間違っています。";
        break;
    }
    require_once("login.php");
}

//DB接続情報
$params = array(
    "dsn" => "mysql://username:password@localhost/db_name",
    "table" => "table_name",
    "usernamecol" => "username",
    "passwordcol" => "password"
);

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

//認証スタート
$authobj->start();

//ログアウト処理
if (isset($_POST["logout"])) {
    print<<<EOF
    ログアウトしました.もう一度ログインするときは<br />
    <a href="{$_SERVER["PHP_SELF"]}">ここ</a>をクリックしてください.<br />
    EOF;
    $authobj->logout();
    exit;
}

//ログイン処理
if (!$authobj->getAuth()){
    exit();
}else{
    printf("ようこそ! %s さん<br>\n",$authobj->getUsername());
    print<<<EOF
    <form method="POST">
    <input type="SUBMIT" value="ログアウト" name="logout">
    </form>
    EOF;
}

?>

login.phpの内容。

<form method="POST" action="<?php print($_SERVER['PHP_SELF']) ?">
<font color="red"><?php print ($msg);?></font>
<table border="0">
  <tr>
   <th align="right">ユーザID:</th>
   <td><input type="text" name="username" size="12" maxlength="18" /></td>
  </tr>
  <tr>
   <th align="right">パスワード:</th>
   <td><input type="password" name="password" size="12" maxlength="28" /></td>
  </tr>
  <tr>
   <td colspan="2">
    <input type="submit" value="ログイン" />
   </td>
  </tr>
</table>
</form>
    "dsn" => "mysql://username:password@localhost/db_name",
    "table" => "table_name",

実際の上記のコードを動かすためには
DB接続のIDが"username"、パスワードが"password"、DB接続URLが"localhost"、データベース名が"db_name"に入れ替えておく。
"table_name"はテーブル名。

テーブル作成方法はググればいいので省く。


今後の課題は新規ID登録画面の作成。

・登録情報はID、パス、メアド。
・一発登録でなく、登録メールによるURL認証による登録方式。


だれか参考になるコメントやトラバお願いしまーす!!


参考URL
ユーザー認証(PEAR::Auth) - PEAR入門
Manual :: 使用例
PEAR::Authを使って認証する。 - カサヒラボ