source: branches/feature-module-update/data/class/pages/regist/LC_Page_Regist.php @ 16379

Revision 16379, 10.0 KB checked in by nanasess, 15 years ago (diff)

addslashes() を SC_Utils_Ex::sfQuoteSmart() に修正

  • Property svn:keywords set to Id Revision Date
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
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_Regist extends LC_Page {
19
20    // {{{ properties
21
22    /** ページ情報の配列 */
23    var $arrInfo;
24
25    /** 設定情報 */
26    var $CONF;
27
28    // }}}
29    // {{{ functions
30
31    /**
32     * Page を初期化する.
33     *
34     * @return void
35     */
36    function init() {
37        parent::init();
38        $this->tpl_css = URL_DIR.'css/layout/regist/index.css';
39    }
40
41    /**
42     * Page のプロセス.
43     *
44     * @return void
45     */
46    function process() {
47        $objConn = new SC_DBConn();
48        $objQuery = new SC_Query();
49        $objView = new SC_SiteView();
50        $objSiteInfo = $objView->objSiteInfo;
51        $objCustomer = new SC_Customer();
52        $objDb = new SC_Helper_DB_Ex();
53        $this->CONF = $objDb->sf_getBasisData();
54        $this->arrInfo = $objSiteInfo->data;
55
56        // キャンペーンからの登録の場合の処理
57        if($_GET["cp"] != "") {
58            $etc_val = array("cp" => $_GET['cp']);
59        }
60
61        //-- 本登録完了のためにメールから接続した場合
62        if ($_GET["mode"] == "regist") {
63
64            //-- 入力チェック
65            $this->arrErr = $this->lfErrorCheck($_GET);
66            if ($this->arrErr) {
67                $this->tpl_mainpage = 'regist/error.tpl';
68                $this->tpl_css = "/css/layout/regist/error.css";
69                $this->tpl_title = 'エラー';
70
71            } else {
72                $registSecretKey = $this->lfRegistData($_GET);          //本会員登録(フラグ変更)
73                $this->lfSendRegistMail($registSecretKey);              //本会員登録完了メール送信
74
75                // ログイン済みの状態にする。
76                $email = $objQuery->get("dtb_customer", "email", "secret_key = ?", array($registSecretKey));
77                $objCustomer->setLogin($email);
78                $this->sendRedirect($this->getLocation("./complate.php", $etc_val));
79                exit;
80            }
81
82        //-- それ以外のアクセスは無効とする
83        } else {
84            $this->arrErr["id"] = "無効なアクセスです。";
85            $this->tpl_mainpage = 'regist/error.tpl';
86            $this->tpl_css = "/css/layout/regist/error.css";
87            $this->tpl_title = 'エラー';
88
89        }
90
91        //---- ページ表示
92        $objView->assignobj($this);
93        $objView->display(SITE_FRAME);
94    }
95
96
97    /**
98     * モバイルページを初期化する.
99     *
100     * @return void
101     */
102    function mobileInit() {
103    }
104
105    /**
106     * Page のプロセス(モバイル).
107     *
108     * @return void
109     */
110    function mobileProcess() {
111        $objConn = new SC_DBConn();
112        $objView = new SC_MobileView();
113        $objSiteInfo = $objView->objSiteInfo;
114        $objCustomer = new SC_Customer();
115        $objDb = new SC_Helper_DB_Ex();
116        $this->CONF = $objDb->sf_getBasisData();
117        $arrInfo = $objSiteInfo->data;
118
119        //-- 本登録完了のためにメールから接続した場合
120        if ($_GET["mode"] == "regist") {
121   
122            //-- 入力チェック
123            $this->arrErr = lfErrorCheck($_GET);
124            if ($this->arrErr) {
125                $this->tpl_mainpage = 'regist/error.tpl';
126                $this->tpl_css = "/css/layout/regist/error.css";
127                $this->tpl_title = 'エラー';
128
129            } else {
130                //$this->tpl_mainpage = 'regist/complete.tpl';
131                //$this->tpl_title = ' 会員登録(完了ページ)';
132                $registSecretKey = $this->lfRegistData($_GET);          //本会員登録(フラグ変更)
133                $this->lfSendRegistMail($registSecretKey);              //本会員登録完了メール送信
134
135                // ログイン済みの状態にする。
136                $objQuery = new SC_Query();
137                $email = $objQuery->get("dtb_customer", "email", "secret_key = ?", array($registSecretKey));
138                $objCustomer->setLogin($email);
139                $this->sendRedirect($this->getLocation("./complete.php"), true);
140                exit;
141            }
142
143            //-- それ以外のアクセスは無効とする
144        } else {
145            $this->arrErr["id"] = "無効なアクセスです。";
146            $this->tpl_mainpage = 'regist/error.tpl';
147            $this->tpl_css = "/css/layout/regist/error.css";
148            $this->tpl_title = 'エラー';
149
150        }
151
152        //---- ページ表示
153        $objView->assignobj($this);
154        $objView->display(SITE_FRAME);
155    }
156
157    /**
158     * デストラクタ.
159     *
160     * @return void
161     */
162    function destroy() {
163        parent::destroy();
164    }
165
166    //---- 登録
167    function lfRegistData($array) {
168        $objQuery = new SC_Query();
169        $objConn = new SC_DBConn();
170        $this->arrInfo;
171
172        do {
173            $secret = SC_Utils_Ex::sfGetUniqRandomId("r");
174        } while( ($result = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer WHERE secret_key = ?", array($secret)) ) != 0);
175
176        $sql = "SELECT email FROM dtb_customer WHERE secret_key = ? AND status = 1";
177        $email = $objConn->getOne($sql, array($array["id"]));
178
179        $objConn->query("BEGIN");
180        $arrRegist["secret_key"] = $secret; // 本登録ID発行
181        $arrRegist["status"] = 2;
182        $arrRegist["update_date"] = "NOW()";
183
184        $objQuery = new SC_Query();
185        $where = "secret_key = ? AND status = 1";
186
187        $arrRet = $objQuery->select("point", "dtb_customer", $where, array($array["id"]));
188        // 会員登録時の加算ポイント(購入時会員登録の場合は、ポイント加算)
189        $arrRegist['point'] = $arrRet[0]['point'] + $arrInfo['welcome_point'];
190
191        $objQuery->update("dtb_customer", $arrRegist, $where, array($array["id"]));
192
193        /* 購入時の自動会員登録は行わないためDEL
194        // 購入時登録の場合、その回の購入を会員購入とみなす。
195        // 会員情報の読み込み
196        $where1 = "secret_key = ? AND status = 2";
197        $customer = $objQuery->select("*", "dtb_customer", $where1, array($secret));
198        // 初回購入情報の読み込み
199        $order_temp_id = $objQuery->get("dtb_order_temp", "order_temp_id");
200        // 購入情報の更新
201        if ($order_temp_id != null) {
202            $arrCustomer['customer_id'] = $customer[0]['customer_id'];
203            $where3 = "order_temp_id = ?";
204            $objQuery->update("dtb_order_temp", $arrCustomer, $where3, array($order_temp_id));
205            $objQuery->update("dtb_order", $arrCustomer, $where3, array($order_temp_id));
206        }
207        */
208
209        $sql = "SELECT mailmaga_flg FROM dtb_customer WHERE email = ?";
210        $result = $objConn->getOne($sql, array($email));
211
212        switch($result) {
213        // 仮HTML
214        case '4':
215            $arrRegistMail["mailmaga_flg"] = 1;
216            break;
217        // 仮TEXT
218        case '5':
219            $arrRegistMail["mailmaga_flg"] = 2;
220            break;
221        // 仮なし
222        case '6':
223            $arrRegistMail["mailmaga_flg"] = 3;
224            break;
225        default:
226            $arrRegistMail["mailmaga_flg"] = $result;
227            break;
228        }
229
230        $objQuery->update("dtb_customer", $arrRegistMail, "email = " . SC_Utils_Ex::sfQuoteSmart($email). " AND del_flg = 0");
231        $objConn->query("COMMIT");
232
233        return $secret;     // 本登録IDを返す
234    }
235
236    //---- 入力エラーチェック
237    function lfErrorCheck($array) {
238
239        $objConn = new SC_DbConn();
240        $objErr = new SC_CheckError($array);
241
242        $objErr->doFunc(array("仮登録ID", 'id'), array("EXIST_CHECK"));
243        if (! EregI("^[[:alnum:]]+$",$array["id"] )) {
244            $objErr->arrErr["id"] = "無効なURLです。メールに記載されている本会員登録用URLを再度ご確認ください。";
245        }
246        if (! $objErr->arrErr["id"]) {
247
248            $sql = "SELECT customer_id FROM dtb_customer WHERE secret_key = ? AND status = 1 AND del_flg = 0";
249            $result = $objConn->getOne($sql, array($array["id"]));
250
251            if (! is_numeric($result)) {
252                $objErr->arrErr["id"] .= "※ 既に会員登録が完了しているか、無効なURLです。<br>";
253                return $objErr->arrErr;
254
255            }
256        }
257
258        return $objErr->arrErr;
259    }
260
261    //---- 正会員登録完了メール送信
262    function lfSendRegistMail($registSecretKey) {
263        $objConn = new SC_DbConn();
264        global $CONF;
265
266        //-- 姓名を取得
267        $sql = "SELECT email, name01, name02 FROM dtb_customer WHERE secret_key = ?";
268        $result = $objConn->getAll($sql, array($registSecretKey));
269        $data = $result[0];
270
271        //-- メール送信
272        $objMailText = new SC_SiteView();
273        $objMailText->assign("CONF", $CONF);
274        $objMailText->assign("name01", $data["name01"]);
275        $objMailText->assign("name02", $data["name02"]);
276        $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl");
277        $subject = sfMakeSubject('会員登録が完了しました。');
278        $objMail = new SC_SendMail();
279
280        $objMail->setItem(
281                              ''                                // 宛先
282                            , $subject//"【" .$CONF["shop_name"]. "】".ENTRY_CUSTOMER_REGIST_SUBJECT      // サブジェクト
283                            , $toCustomerMail                   // 本文
284                            , $CONF["email03"]                  // 配送元アドレス
285                            , $CONF["shop_name"]                // 配送元 名前
286                            , $CONF["email03"]                  // reply_to
287                            , $CONF["email04"]                  // return_path
288                            , $CONF["email04"]                  //  Errors_to
289                        );
290        // 宛先の設定
291        $name = $data["name01"] . $data["name02"] ." 様";
292        $objMail->setTo($data["email"], $name);
293        $objMail->sendMail();
294    }
295}
296?>
Note: See TracBrowser for help on using the repository browser.