« Pear::Var_Dumpを使おう | メイン | Postgresでテーブルの一部をcsvにエクスポート・インポート »

2007年9月19日 (水)

Pear::Auth+MDB2でセッション認証

必要な環境:CentOS+PHP + PostgreSQL (MySQL) + Pear::MDB2 + Pear::Auth

1.まずPear::Authのインストール

# pear install Auth

*pear自体はインストール済みとする

2.mkpasswdコマンドのインストール

CentOSではデフォルトでmkpasswdコマンドはインストールされていない

# yum install expect

3.ユーザー認証用パスワード生成(デフォルトの長さは9文字だがここでは7文字とした)

# mkpasswd -l 7
cCQj53@

4.これをMD5でハッシュ。MDB2とおなじMD5にしておかないとMD5関数(PHP)で求めるハッシュ値とMySQLのmd5関数で求める値が異なる場合などで、認証エラーとなる。

perlを使ってmd5を求める場合

# perl -MDigest::MD5 -e 'printf "{DIGEST-MD5}%s\n", Digest::MD5::md5_hex("cCQj53@")'
{DIGEST-MD5}7cb71b587418baa134a3baa0647f9308

phpコマンドラインからmd5を求める場合・・・こっちのが楽って・・・

# php -r 'echo md5("cCQj53@");'
7cb71b587418baa134a3baa0647f9308

5.DBにユーザー認証用テーブルの作成

create table ausers (
name varchar (32) primary key,
passwd varchar (32)
);
grant all on ausers to DBユーザー;
insert into ausers(name,passwd) values ('認証したいユーザーのID','7cb71b587418baa134a3baa0647f9308');

6.認証用のソース(ここではpgsqlを指定しているがMySQlならmysqlとする)

require_once ("Auth/Auth.php");
$options = array(
 "dsn" => "pgsql://user_name:password@host_name/db_name", // PEAR::MDB2参照
 "table" => "ausers", // テーブル名
 "usernamecol" => "name", // ユーザー名カラム
 "passwordcol" => "passwd", // パスワードカラム
);
$auth = new Auth("MDB2", $options);
$auth->setExpire(300);   // set timeout to 5min
$auth->setFailedLoginCallback ("raise_Error");  // ログインエラーのときの処理
$auth->start();  // ログイン画面を表示(Authのデフォルト画面)
if($auth->getAuth()){
  print $auth->getUsername();
  print "さんがログインしました<br />";
}
exit();

function raise_Error(){
  print <<<ERR_MES
login failed<br>
ERR_MES;
}
?>

オリジナルのログイン画面を表示したい場合は、Authインスタンス生成時、第3パラメータにログイン画面表示用コールバック関数を書く。

$auth = new Auth("MDB2", $options, 'func_name');
 :
function func_name($username, $status){
 ログイン画面の表示処理
}

実際に、成功、失敗の両方で試してみる。ログイン後のコールバック関数では、フォーム入力値のサニタイズをお忘れなく。

次は、Smartyと組み合わせて作ってみよう。

トラックバック

このページのトラックバックURL:
http://app.justblog.jp/t/trackback/237687/10359023

このページへのトラックバック一覧 Pear::Auth+MDB2でセッション認証:

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。

2010年2月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28            

My Favorite Songs

  • My foolish heart
    Bill Evans Trio: Waltz for Deby (★★★★★)