source: branches/feature-module-update/data/class/pages/admin/LC_Page_Admin_Login.php @ 15286

Revision 15286, 3.7 KB checked in by nanasess, 13 years ago (diff)

クラス化対応

  • Property svn:keywords set to Id Revision Date
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8// {{{ requires
9require_once(CLASS_PATH . "pages/LC_Page.php");
10
11/**
12 * 管理者ログイン のページクラス.
13 *
14 * @package Page
15 * @author LOCKON CO.,LTD.
16 * @version $Id$
17 */
18class LC_Page_Admin_Login extends LC_Page {
19
20    // {{{ properties
21
22    /** SC_Session インスタンス */
23    var $objSess;
24
25    // }}}
26    // {{{ functions
27
28    /**
29     * Page を初期化する.
30     *
31     * @return void
32     */
33    function init() {
34        parent::init();
35    }
36
37    /**
38     * Page のプロセス.
39     *
40     * @return void
41     */
42    function process() {
43        $conn = new SC_DBConn();
44        $this->objSess = new SC_Session();
45        $ret = false;
46
47        // 入力判定
48        if(strlen($_POST{'login_id'}) > 0 && strlen($_POST{'password'}) > 0) {
49            // 認証パスワードの判定
50            $ret = $this->fnCheckPassword($conn);
51        }
52
53        if($ret) {
54            // 成功
55            $this->sendRedirect($this->getLocation(URL_HOME));
56        } else {
57            // エラーページの表示
58            SC_Utils_Ex::sfDispError(LOGIN_ERROR);
59            exit;
60        }
61    }
62
63    /**
64     * デストラクタ.
65     *
66     * @return void
67     */
68    function destroy() {
69        parent::destroy();
70    }
71
72    /* 認証パスワードの判定 */
73    function fnCheckPassword($conn) {
74        $sql = "SELECT member_id, password, authority, login_date, name FROM dtb_member WHERE login_id = ? AND del_flg <> 1 AND work = 1";
75        $arrcol = array ($_POST['login_id']);
76        // DBから暗号化パスワードを取得する。
77        $data_list = $conn->getAll($sql ,$arrcol);
78        // パスワードの取得
79        $password = $data_list[0]['password'];
80        // ユーザ入力パスワードの判定
81        $ret = sha1($_POST['password'] . ":" . AUTH_MAGIC);
82
83        if ($ret == $password) {
84               // セッション登録
85            $this->fnSetLoginSession($data_list[0]['member_id'], $data_list[0]['authority'], $data_list[0]['login_date'], $data_list[0]['name']);
86            // ログイン日時の登録
87            $this->fnSetLoginDate();
88            return true;
89        }
90
91        // パスワード
92        GC_Utils_Ex::gfPrintLog($_POST['login_id'] . " password incorrect.");
93        return false;
94    }
95
96    /* 認証セッションの登録 */
97    function fnSetLoginSession($member_id,$authority,$login_date, $login_name = '') {
98
99        // 認証済みの設定
100        $this->objSess->SetSession('cert', CERT_STRING);
101        $this->objSess->SetSession('login_id', $_POST{'login_id'});
102        $this->objSess->SetSession('authority', $authority);
103        $this->objSess->SetSession('member_id', $member_id);
104        $this->objSess->SetSession('login_name', $login_name);
105        $this->objSess->SetSession('uniqid', $this->objSess->getUniqId());
106
107        if(strlen($login_date) > 0) {
108            $this->objSess->SetSession('last_login', $login_date);
109        } else {
110            $this->objSess->SetSession('last_login', date("Y-m-d H:i:s"));
111        }
112        $sid = $this->objSess->GetSID();
113        // ログに記録する
114        GC_Utils_Ex::gfPrintLog("login : user=".$_SESSION{'login_id'}." auth=".$_SESSION{'authority'}." lastlogin=". $_SESSION{'last_login'} ." sid=".$sid);
115    }
116
117    /* ログイン日時の更新 */
118    function fnSetLoginDate() {
119        $oquery = new SC_Query();
120        $sqlval['login_date'] = date("Y-m-d H:i:s");
121        $member_id = $this->objSess->GetSession('member_id');
122        $where = "member_id = " . $member_id;
123        $ret = $oquery->update("dtb_member", $sqlval, $where);
124    }
125}
126?>
Note: See TracBrowser for help on using the repository browser.