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 |
|
---|
12 | require_once('../require.php');
|
---|
13 |
|
---|
14 | class 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 |
|
---|
35 | if (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 |
|
---|
42 | if ( $_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 | // デフォルト入力
|
---|
114 | if($_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 | // 空メール用のトークンを作成。
|
---|
123 | if (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 |
|
---|
136 | function 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 |
|
---|