人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PearのAuthを使った認証システムを作りたいのですが仕組みがさっぱり分かりません。

希望のログインシステムは
・基本認証タイプではなくフォームタイプの物でログインが可能
・一般的なクッキーとセッションIDを組み合わせログインを維持
・ディレクトリに関係なく指定したPHPファイルであればどの位置でもブロック可能。
・できればユーザーを認識でき同じ会員でもAが進めない領域でもBは進めるようにしたい。

などです。このようなシステムをPearのAuthで構成することは可能でしょうか?又、メンバ(Auth::logout()のようなもの)とはどのように使うのですか?

ちなみに私はPHPに関しては知識がなくPerlに関して初心者レベルの知識しかありません。が、作ろうと思っています。

●質問者: esecua
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:Pear Perl PHP クッキー システム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● jouno
●25ポイント

http://pear.php.net/manual/ja/package.authentication.auth.intro....

PEAR :: Manual :: 導入

デフォルトではそういう動作になっています。

こちらのチュートリアルをご覧ください。

http://dozo.matrix.jp/pear/index.php/PEAR/Auth.html

PEAR::Auth ユーザー認証 - PHP::PEAR - dozo PukiWiki

こちらと、

http://www.bnote.net/php/pear_idx.html

こちらもどうぞ。

http://pear.php.net/manual/ja/package.authentication.auth.php

PEAR :: Manual :: Auth

全般的なヘルプはこちら。

http://www.bnote.net/php/pear/ref_auth.html

メンバというのはクラスのメンバー関数のことでしょうか。単純にオブジェクトのメソッドのことだと理解していいんじゃないでしょうか。

http://pear.php.net/package/Auth/docs/latest/Auth/Auth.html#meth...

Docs For Class Auth

日本語マニュアルにまだ入っていない機能はこちらに英語であります。ユーザー別に認証をわける場合、少数なら個別にユーザー名で場合わけすればいいですが、多人数の場合はそうもいかないので、認証レベルというか認証グループ情報をユーザーごとに設定して、getAuthDataで取得して場合わけ、という感じだと思います。


http://www.bnote.net/php/pear/25_auth_db.html

具体的にはここで

getAuthDataをつかってemail情報を取得している部分がグループ分けの参考になると思います。

◎質問者からの返答

回答ありがとうございました。実は出してもらったリンクすべて既見でした。

できればリンク集ではなく回答が欲しかったです。

ありがとうございました。


2 ● jouno
●25ポイント

http://www.hatena.ne.jp/1132304878#

人力検索はてな - PearのAuthを使った認証システムを作りたいのですが仕組みがさっぱり分かりません。 希望のログインシステムは ・基本認証タイプではなくフォームタイプの物でログインが可..

bnoteや本家の「導入」のチュートリアルは十分にわかりやすいので、あれ以上きちんと説明できる自信はないのですが、いちおう。


<?php


require_once(”Auth/Auth.php”);


// Authオプション

$params = array(

’dsn’=>”mysql://username:password@localhost/database”,

’table’=>”usermng”, // テーブル名

’usernamecol’=>”username”, // ユーザ名の列名

’passwordcol’=>”password”, // パスワードの列名

’cryptType’=>”md5”, // パスワードの暗号化形式

);


$objAuth = new Auth(”DB”, $params);


// ユーザーの追加

if($objAuth->addUser(’user’,’pass’)) {

echo ”ユーザーを追加しました。”;

}


?>


まず、require_once(”Auth/Auth.php”);

でパッケージを導入してauthの機能が使えるようにします。

つぎに、$objAuth = new Auth(”DB”, $params);

では、Authオブジェクトを初期化しています。

この場合は、認証でつかう情報がmysqlデータベースに格納されているので、そのデータベースの場所と、データのユーザー名とパスワードが格納している項目名を指定しています。

$objAuth->addUser(’user’,’pass’)

ではユーザーとパスワードを追加しています。

この部分は、当然ですが、すべてのファイルで行うのではなく、一回だけ、あらかじめやっておく部分です。


なお、念のため、perlにもオブジェクト指向はありますが、この書き方はAuthクラスのインスタンスである$objAuthのメソッドであるadduserを実行するという意味です。この、メソッドというのが、クラスのメンバでもあります。要するに、オブジェクトに属する関数のことです。


パスワード以外の情報もデータベースに格納したいときは、

$useropts = array(’email’=>’hoge@hoge.com’);

$objAuth->addUser(’user’,’pass’,$useropts);

みたいにします。


そうすると、データベースに、ユーザー名、パスワード、emailの情報が格納されるわけです。

で、あとで認証するとき、スクリプトはこのデータベースを見に行って、一致するかどうか確認するわけです。


実際の認証は

$objAuth->start();

と書くと、処理がその部分に来ると認証フォームの画面になります。

で、認証画面から戻ってきても、これだけでは普通に画面が表示されます。


そこで、まず、$objAuth->getAuth()で認証に成功したかどうかを取得します。返り値がtrueなら成功なので、それで、if then elseで場合わけして、成功のときだけ以降を表示するように書くわけです。


具体的には、隠したいページすべてでまずgetAuthで場合わけして、認証されていない場合は、認証画面に飛ばす、という動作にしたりするわけです。


これら一連の過程でクッキーの発行やセッションIDの決定は勝手にやってくれます。こまかく設定したり調整したりはできますが、とくに必要がなければデフォルトでかまわないはずです。


ユーザーごとに処理を分けるためには、getAuthDataを使って、あらかじめデータベースに入れておいたデータを使います。この例ではemailを追加で入れておいたわけです。同様にして、group名を入れて、グループごとに処理をわけたりすればいい訳です。


私は回答数の関係でここまでですが、以降の回答者のために、できれば特にわからない点を書いていただけるとありがたいです。

◎質問者からの返答

詳細なるご回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ