source: branches/feature-module-update/html/mobile/forgot/index.php @ 15080

Revision 15080, 5.7 KB checked in by nanasess, 17 years ago (diff)

svn properties 設定

  • svn:mime-type - application/x-httpd-php; charset=UTF-8
  • svn:keywords - Id
  • Property svn:keywords set to Id
  • Property svn:mime-type set to application/x-httpd-php; charset=UTF-8
Line 
1<?php
2/**
3 *
4 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
5 *
6 * http://www.lockon.co.jp/
7 *
8 *
9 * モバイルサイト/パスワードを忘れた方
10 */
11
12require_once('../require.php');
13
14class LC_Page {
15    var $errmsg;
16    var $arrReminder;
17    var $temp_password;
18
19    function LC_Page() {
20        $this->tpl_mainpage = 'forgot/index.tpl';
21        $this->tpl_title = 'パスワードを忘れた方';
22        $this->tpl_mainno = '';
23    }
24}
25
26$conn = new SC_DBConn();
27$objPage = new LC_Page();
28$objPage = sfGetPageLayout($objPage, false, DEF_LAYOUT);
29$objView = new SC_MobileView();
30$objSess = new SC_Session();
31$CONF = sf_getBasisData();                  // 店舗基本情報
32// クッキー管理クラス
33$objCookie = new SC_Cookie(COOKIE_EXPIRE);
34
35if (isset($_SESSION['mobile']['kara_mail_from'])) {
36    if (!isset($_POST['mode'])) {
37        $_POST['mode'] = 'mail_check';
38    }
39    $_POST['email'] = $_SESSION['mobile']['kara_mail_from'];
40}
41
42if ( $_POST['mode'] == 'mail_check' ){
43    //メアド入力時
44    $_POST['email'] = strtolower($_POST['email']);
45    $sql = "SELECT * FROM dtb_customer WHERE (email ILIKE ? OR email_mobile ILIKE ?) AND status = 2 AND del_flg = 0";
46    $result = $conn->getAll($sql, array($_POST['email'], $_POST['email']) );
47   
48    if ( $result[0]['reminder'] ){      // 本会員登録済みの場合
49        // 入力emailが存在する     
50        $_SESSION['forgot']['email'] = $_POST['email'];
51        $_SESSION['forgot']['reminder'] = $result[0]['reminder'];
52        // ヒミツの答え入力画面
53        $objPage->Reminder = $arrReminder[$_SESSION['forgot']['reminder']];
54        $objPage->tpl_mainpage = 'forgot/secret.tpl';
55    } else {
56        $sql = "SELECT customer_id FROM dtb_customer WHERE email ILIKE ? AND status = 1 AND del_flg = 0";   //仮登録中の確認
57        $result = $conn->getAll($sql, array($_POST['email']) );
58        if ($result) {
59            $objPage->errmsg = "ご入力のemailアドレスは現在仮登録中です。<br>登録の際にお送りしたメールのURLにアクセスし、<br>本会員登録をお願いします。";
60        } else {        // 登録していない場合
61            $objPage->errmsg = "ご入力のemailアドレスは登録されていません";
62        }
63    }
64   
65} elseif( $_POST['mode'] == 'secret_check' ){
66    //ヒミツの答え入力時
67   
68    if ( $_SESSION['forgot']['email'] ) {
69        // ヒミツの答えの回答が正しいかチェック
70       
71        $sql = "SELECT * FROM dtb_customer WHERE (email ILIKE ? OR email_mobile ILIKE ?) AND del_flg = 0";
72        $result = $conn->getAll($sql, array($_SESSION['forgot']['email'], $_SESSION['forgot']['email']) );
73        $data = $result[0];
74       
75        if ( $data['reminder_answer'] === $_POST['input_reminder'] ){
76            // ヒミツの答えが正しい
77                       
78            // 新しいパスワードを設定する
79            $objPage->temp_password = gfMakePassword(8);
80                       
81            if(FORGOT_MAIL == 1) {
82                // メールで変更通知をする
83                lfSendMail($CONF, $_SESSION['forgot']['email'], $data['name01'], $objPage->temp_password);
84            }
85           
86            // DBを書き換える
87            $sql = "UPDATE dtb_customer SET password = ?, update_date = now() WHERE customer_id = ?";
88            $conn->query( $sql, array( sha1($objPage->temp_password . ":" . AUTH_MAGIC) ,$data['customer_id']) );
89           
90            // 完了画面の表示
91            $objPage->tpl_mainpage = 'forgot/complete.tpl';
92           
93            // セッション変数の解放
94            $_SESSION['forgot'] = array();
95            unset($_SESSION['forgot']);
96           
97        } else {
98            // ヒミツの答えが正しくない
99           
100            $objPage->Reminder = $arrReminder[$_SESSION['forgot']['reminder']];
101            $objPage->errmsg = "パスワードを忘れたときの質問に対する回答が正しくありません";
102            $objPage->tpl_mainpage = 'forgot/secret.tpl';
103
104        }
105   
106       
107    } else {
108        // アクセス元が不正または、セッション保持期間が切れている
109        $objPage->errmsg = "emailアドレスを再度登録してください。<br />前回の入力から時間が経っていますと、本メッセージが表示される可能性があります。";
110    }
111}
112
113// デフォルト入力
114if($_POST['email'] != "") {
115    // POST値を入力
116    $objPage->tpl_login_email = $_POST['email'];
117} else {
118    // クッキー値を入力
119    $objPage->tpl_login_email = $objCookie->getCookie('login_email');
120}
121
122// 空メール用のトークンを作成。
123if (MOBILE_USE_KARA_MAIL) {
124    $token = gfPrepareKaraMail('forgot/index.php');
125    if ($token !== false) {
126        $objPage->tpl_kara_mail_to = MOBILE_KARA_MAIL_ADDRESS_USER . MOBILE_KARA_MAIL_ADDRESS_DELIMITER . 'forgot_' . $token . '@' . MOBILE_KARA_MAIL_ADDRESS_DOMAIN;
127    }
128}
129
130//---- ページ表示
131$objView->assignobj($objPage);
132$objView->display(SITE_FRAME);
133
134//-----------------------------------------------------------------------------------------------------------------------------------
135
136function lfSendMail($CONF, $email, $customer_name, $temp_password){
137    // パスワード変更お知らせメール送信
138   
139    $objPage = new LC_Page();
140    $objPage->customer_name = $customer_name;
141    $objPage->temp_password = $temp_password;
142    $objMailText = new SC_MobileView();
143    $objMailText->assignobj($objPage);
144   
145    $toCustomerMail = $objMailText->fetch("mail_templates/forgot_mail.tpl");
146    $objMail = new GC_SendMail();
147   
148    $objMail->setItem(
149                          ''                                // 宛先
150                        , "パスワードが変更されました" ."【" .$CONF["shop_name"]. "】"     // サブジェクト
151                        , $toCustomerMail                   // 本文
152                        , $CONF["email03"]                  // 配送元アドレス
153                        , $CONF["shop_name"]                // 配送元 名前
154                        , $CONF["email03"]                  // reply_to
155                        , $CONF["email04"]                  // return_path
156                        , $CONF["email04"]                  //  Errors_to
157
158                                                        );
159    $objMail->setTo($email, $customer_name ." 様");
160    $objMail->sendMail();   
161   
162}
163
164
165?>
166
Note: See TracBrowser for help on using the repository browser.