source: branches/feature-module-update/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php @ 15367

Revision 15367, 4.4 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_FrontParts_LoginCheck extends LC_Page {
19
20    // }}}
21    // {{{ functions
22
23    /**
24     * Page を初期化する.
25     *
26     * @return void
27     */
28    function init() {
29        parent::init();
30    }
31
32    /**
33     * Page のプロセス.
34     *
35     * @return void
36     */
37    function process() {
38        // 不正なURLがPOSTされた場合はエラー表示
39        if (isset($_POST['url']) && $this->lfIsValidURL() !== true) {
40            GC_Utils_Ex::gfPrintLog('invalid access :login_check.php $POST["url"]=' . $_POST['url']);
41            SC_Utils_Ex::sfDispSiteError(PAGE_ERROR);
42        }
43
44        $objCustomer = new SC_Customer();
45        // クッキー管理クラス
46        $objCookie = new SC_Cookie(COOKIE_EXPIRE);
47        // パラメータ管理クラス
48        $objFormParam = new SC_FormParam();
49        // パラメータ情報の初期化
50        $this->lfInitParam();
51        // POST値の取得
52        $objFormParam->setParam($_POST);
53
54        if (!isset($_POST['mode'])) $_POST['mode'] = "";
55
56        switch($_POST['mode']) {
57        case 'login':
58            $objFormParam->toLower('login_email');
59            $arrErr = $objFormParam->checkError();
60            $arrForm =  $objFormParam->getHashArray();
61            // クッキー保存判定
62            if ($arrForm['login_memory'] == "1" && $arrForm['login_email'] != "") {
63                $objCookie->setCookie('login_email', $_POST['login_email']);
64            } else {
65                $objCookie->setCookie('login_email', '');
66            }
67
68            if(count($arrErr) == 0) {
69                if($objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'])) {
70                    header("Location: " . $_POST['url']); // FIXME
71                    exit;
72                } else {
73                    $objQuery = new SC_Query;
74                    $where = "email ILIKE ? AND status = 1 AND del_flg = 0";
75                    $ret = $objQuery->count("dtb_customer", $where, array($arrForm['login_email']));
76
77                    if($ret > 0) {
78                        sfDispSiteError(TEMP_LOGIN_ERROR);
79                    } else {
80                        sfDispSiteError(SITE_LOGIN_ERROR);
81                    }
82                }
83            } else {
84                // 入力エラーの場合、元のアドレスに戻す。
85                header("Location: " . $_POST['url']);// FIXME
86                exit;
87            }
88            break;
89        case 'logout':
90            // ログイン情報の解放
91            $objCustomer->EndSession();
92            $mypage_url_search = strpos('.'.$_POST['url'], "mypage");
93            //マイページログイン中はログイン画面へ移行
94            if ($mypage_url_search == 2){
95                header("Location: /mypage/login.php");// FIXME
96            }else{
97                header("Location: " . $_POST['url']);// FIXME
98            }
99            exit;
100            break;
101        }
102    }
103
104    /**
105     * デストラクタ.
106     *
107     * @return void
108     */
109    function destroy() {
110        parent::destroy();
111    }
112
113    /* パラメータ情報の初期化 */
114    function lfInitParam() {
115        global $objFormParam;
116        $objFormParam->addParam("記憶する", "login_memory", INT_LEN, "n", array("MAX_LENGTH_CHECK", "NUM_CHECK"));
117        $objFormParam->addParam("メールアドレス", "login_email", STEXT_LEN, "a", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
118        $objFormParam->addParam("パスワード", "login_pass", STEXT_LEN, "", array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
119    }
120
121    /* POSTされるURLのチェック*/
122    function lfIsValidURL() {
123        $site_url  = sfIsHTTPS() ? SSL_URL : SITE_URL;
124        $check_url = trim($_POST['url']);
125
126        // ローカルドメインチェック
127        if (!preg_match("|^$site_url|", $check_url) && !preg_match("|^/|", $check_url)) {
128            return false;
129        }
130
131        // 改行コード(CR・LF)・NULLバイトチェック
132        $pattern = '/\r|\n|\0|%0D|%0A|%00/';
133        if (preg_match_all($pattern, $check_url, $matches) > 0) {
134            return false;
135        }
136
137        return true;
138    }
139}
140?>
Note: See TracBrowser for help on using the repository browser.