Ethnaで販売管理システムを部分的に開発してみる(その2)ログインとセッション
ログイン画面

今回の処理の流れとしては、以下のようになります。
準備処理
認証用のユーザテーブル(tuser)にユーザIDとパスワードのハッシュ値を登録する。(ハッシュ値の登録にはPHPのMD5関数が使えます。(以前の参考記事)とりあえずということで面倒な場合はそのまま(平文字で)登録して認証の処理でそのまま認証するようにすればいいです。)
ログインからログアウトまで
1. ログイン画面(index.tpl)でユーザIDをパスワードを入力する。
2. ログインアクションでユーザとパスワードを認証する。
3. 認証が出来た場合はセッションを開始してメインメニューの画面を表示する。
4. ログアウト処理でセッションを終了する。
実装は以下のようになっています。
Salesmgr_Tuser
ユーザテーブルのアプリケーションオブジェクトクラスです。
Salesmgr_TuserManager
ユーザテーブルのアプリケーションマネージャクラスです。以下のようにここのauthenticateメソッドでSalesmgr_Tuserを生成して、認証処理を行っています。MD5関数でハッシュ化してチェックしています。テーブルにハッシュ化されずにそのまま格納されている場合は、このMD5関数を使わなければいいです。
class Salesmgr_TuserManager extends Ethna_AppManager
{
//パスワードの認証
function authenticate($userid, $password)
{
$user =& new Salesmgr_Tuser($this->backend, 'userid', $userid );
if( $user->isValid() ){
$passmd5 = MD5( $password );
if( strcmp($passmd5,$user->get('password')) == 0 ){
return 0;
}
else{
return Ethna::raiseNotice('パスワードが正しくありません', E_INVALID_PASSWORD);
}
}
else{
return Ethna::raiseNotice('ユーザIDが正しくありません', E_INVALID_USER);
}
}
}
Salesmgr_Action_LoginDo
ログインのアクションクラスです。以下のようにSalesmgr_TuserManagerを経由して認証を行っています。
/**
* login_doアクションの実装
*
* @access public
* @return string 遷移名
*/
function perform()
{
$usermgr =& $this->backend->getManager("tuser");
$result = $usermgr->authenticate($this->af->get('userid'),$this->af->get('password'));
if(Ethna::isError($result)) {
$this->ae->addObject(null, $result);
return 'index';
}
if( !$this->session->isStart() ) {
$this->session->start();
}
return 'menu_main';
}
Salesmgr_AuthActionClass
Ethna_ActionClassを継承したクラスで以下のようにauthenticateメソッドでセッションが開始されているかどうかのチェックを行っています。セッションが開始されていない場合はログイン画面に移行します。このクラスをログイン以外の全てのアクションの親クラスにします。これでログインしないでアクションの実行が出来ないようになるかと思います。
//
//セッション開始のチェックを追加したEthna_ActionClass
//
class Salesmgr_AuthActionClass extends Ethna_ActionClass
{
function authenticate()
{
//セッションが開始されていなかったらログインから
if( !$this->session->isStart() ) {
return 'index';
}
return parent::authenticate();
}
}
まとめ的に
以上の方法はもちろん一例です。認証はテーブルを使わない単純な方法もあれば、本ページ最後のEthnaの書籍には、はてな認証を使った例も出ています。またセッションに関してはここではEthnaに任せていますが、DBで管理する必要が出てくる場合があるかと思います。
次はデータベース関連です。
今回作成したプロジェクト一式は以下からダウンロードしてご覧いただけます。
「Ethnaで販売管理システムを部分的に開発してみる」のプロジェクト一式
当サイトでのEthna関連記事一覧
- Ethnaで販売管理システムを部分的に開発してみる(その6)PDFファイルの出力 [2007/10/25]
- Ethnaで販売管理システムを部分的に開発してみる(その5)受注業務処理 [2007/10/25]
- Ethnaで販売管理システムを部分的に開発してみる(その4)マスタメンテ実装 [2007/10/21]
- Ethnaで販売管理システムを部分的に開発してみる(その3)データベース関連 [2007/10/21]
- Ethnaで販売管理システムを部分的に開発してみる(その2)ログインとセッション [2007/10/20]
- 「Ethnaで販売管理システムを部分的に開発してみる」のEthnaプロジェクト一式 [2007/10/20]
- Ethnaで販売管理システムを部分的に開発してみる(その1)概要 [2007/10/20]
- Ethnaの導入(その4)アプリケーションオブジェクトの利用その2 [2007/01/08]
- Ethnaの導入(その3)アプリケーションオブジェクトの利用 [2007/01/02]
- Ethnaの導入(その2)セッションの利用と簡単な認証 [2006/12/03]
- Ethnaの導入 [2006/11/30]
参考書籍
EthnaPHP [LL???Books] (LL???BOOKS # 2)
? ? ľ?
?
1,980 (定価)
¥ 1,980 (Amazon価格)
19pt (Amazonポイント)
(Amazonおすすめ度)
ñ????С
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
? ? ľ?
?
1,980 (定価)
¥ 1,980 (Amazon価格)
19pt (Amazonポイント)
(Amazonおすすめ度)
ñ????С
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
??????~?? (DBMagazine SELECTION)
?
??
2,520 (定価)
¥ 2,520 (Amazon価格)
25pt (Amazonポイント)
★★★★☆ (Amazonおすすめ度)
ñ
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
?
??
2,520 (定価)
¥ 2,520 (Amazon価格)
25pt (Amazonポイント)
★★★★☆ (Amazonおすすめ度)
ñ
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
Posted by nishida at 23:55:40
![EthnaPHP [LL???Books] (LL???BOOKS # 2)](http://images.amazon.com/images/P/4774131393.09._SCMZZZZZZZ_.jpg)



