source: branches/comu-utf8/html/mobile/magazine/confirm.php @ 16016

Revision 16016, 6.1 KB checked in by adachi, 15 years ago (diff)

branches/comuをマージ

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    function LC_Page() {
16        /** 必ず変更する **/
17        $this->tpl_mainpage = 'magazine/confirm.tpl';
18        $this->tpl_title .= 'メルマガ確認';
19    }
20}
21
22$objPage = new LC_Page();
23$objConn = new SC_DbConn();
24$objPage->arrForm = $_POST;
25
26// 登録
27if (isset($_REQUEST['btnRegist'])) {
28    $objPage->arrErr = lfMailErrorCheck($objPage->arrForm, "regist");
29
30    // エラーがなければ
31    if (count($objPage->arrErr) == 0) {
32        // 確認
33        $objPage->arrForm['kind'] = 'メルマガ登録';
34        $objPage->arrForm['type'] = 'regist';
35        $objPage->arrForm['mail'] = $objPage->arrForm['regist'];
36    } else {
37        $objPage->tpl_mainpage = 'magazine/index.tpl';
38        $objPage->tpl_title = 'メルマガ登録・解除';
39    }
40// 解除
41} elseif (isset($_REQUEST['btnCancel'])) {
42    $objPage->arrErr = lfMailErrorCheck($objPage->arrForm, "cancel");
43
44    // エラーがなければ
45    if (count($objPage->arrErr) == 0) {
46        // 確認
47        $objPage->arrForm['kind'] = 'メルマガ解除';
48        $objPage->arrForm['type'] = 'cancel';
49        $objPage->arrForm['mail'] = $objPage->arrForm['cancel'];
50    } else {
51        $objPage->tpl_mainpage = 'magazine/index.tpl';
52        $objPage->tpl_title = 'メルマガ登録・解除';
53    }
54// 完了
55} elseif ($_REQUEST['mode'] == 'regist' or $_REQUEST['mode'] == 'cancel') {
56
57    // 登録
58    if ($_REQUEST['mode'] == 'regist') {
59        $uniqId = lfRegistData($_POST["email"]);
60        $subject = sfMakesubject('メルマガ登録のご確認');
61    // 解除
62    } elseif ($_REQUEST['mode'] == 'cancel') {
63        $uniqId = lfGetSecretKey($_POST["email"]);
64        $subject = sfMakesubject('メルマガ解除のご確認');
65    }
66    $CONF = sf_getBasisData();
67    $objPage->CONF = $CONF;
68    $objPage->tpl_url = gfAddSessionId(MOBILE_SSL_URL . "magazine/" . $_REQUEST['mode'] . ".php?id=" . $uniqId);
69   
70    $objMailText = new SC_MobileView();
71    $objMailText->assignobj($objPage);
72    $toCustomerMail = $objMailText->fetch("mail_templates/mailmagazine_" . $_REQUEST['mode'] . ".tpl");
73    $objMail = new GC_SendMail();
74    $objMail->setItem(
75                        ''                                  // 宛先
76                        , $subject                          // サブジェクト
77                        , $toCustomerMail                   // 本文
78                        , $CONF["email03"]                  // 配送元アドレス
79                        , $CONF["shop_name"]                // 配送元 名前
80                        , $CONF["email03"]                  // reply_to
81                        , $CONF["email04"]                  // return_path
82                        , $CONF["email04"]                  //  Errors_to
83                        , $CONF["email01"]                  //  Bcc
84                                                        );
85    // 宛先の設定
86    $objMail->setTo($_POST["email"], $_POST["email"]);
87    $objMail->sendMail();
88
89    // 完了ページに移動させる。
90    header("Location:" . gfAddSessionId(sfGetCurrentUri() . "/complete.php"));
91    exit;
92} else {
93    sfDispSiteError(CUSTOMER_ERROR, "", false, "", true);
94}
95
96// レイアウトデザインを取得
97$objPage = sfGetPageLayout($objPage, false, DEF_LAYOUT);
98
99$objView = new SC_MobileView();
100$objView->assignobj($objPage);
101$objView->display(SITE_FRAME);
102
103//-----------------------------------------------------------------------------------------------------------------------------------
104
105
106//---- 入力エラーチェック
107function lfMailErrorCheck($array, $dataName) {
108    $objErr = new SC_CheckError($array);
109    $objErr->doFunc(
110                array('メールアドレス', $dataName, MTEXT_LEN) ,
111                array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK",
112                    "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK", "MOBILE_EMAIL_CHECK"));
113
114    // 入力エラーがなければ
115    if (count($objErr->arrErr) == 0) {
116        // メルマガの登録有無
117        $flg = lfIsRegistData($array[$dataName]);
118
119        // 登録の時
120        if ($dataName == 'regist' and $flg == true) {
121            $objErr->arrErr[$dataName] = "既に登録されています。<br>";
122        // 解除の時
123        } elseif ($dataName == 'cancel' and $flg == false) {
124            $objErr->arrErr[$dataName] = "メルマガ登録がされていません。<br>";
125        }
126    }
127
128    return $objErr->arrErr;
129}
130
131
132//---- メルマガ登録
133function lfRegistData ($email) {
134    global $objConn;
135
136    $count = 1;
137    while ($count != 0) {
138        $uniqid = sfGetUniqRandomId("t");
139        $count = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer_mail WHERE secret_key = ?", array($uniqid));
140    }
141   
142    $arrRegist["email"] = $email;           // メールアドレス
143    $arrRegist["mail_flag"] = 5;            // 登録状態
144    $arrRegist["secret_key"] = $uniqid;     // ID発行
145    $arrRegist["create_date"] = "now()";    // 作成日
146    $arrRegist["update_date"] = "now()";    // 更新日
147
148    //-- 仮登録実行
149    $objConn->query("BEGIN");
150
151    $objQuery = new SC_Query();
152
153    //-- 既にメルマガ登録しているかの判定
154    $sql = "SELECT count(*) FROM dtb_customer_mail WHERE email = ?";
155    $mailResult = $objConn->getOne($sql, array($arrRegist["email"]));
156
157    if ($mailResult == 1) {     
158        $objQuery->update("dtb_customer_mail", $arrRegist, "email = '" .addslashes($arrRegist["email"]). "'");         
159    } else {
160        $objQuery->insert("dtb_customer_mail", $arrRegist);     
161    }
162    $objConn->query("COMMIT");
163
164    return $uniqid;
165}
166
167// 登録されているキーの取得
168function lfGetSecretKey ($email) {
169    global $objConn;
170
171    $sql = "SELECT secret_key FROM dtb_customer_mail WHERE email = ?";
172    $uniqid = $objConn->getOne($sql, array($email));
173
174    if ($uniqid == '') {
175        $count = 1;
176        while ($count != 0) {
177            $uniqid = sfGetUniqRandomId("t");
178            $count = $objConn->getOne("SELECT COUNT(*) FROM dtb_customer_mail WHERE secret_key = ?", array($uniqid));
179        }
180
181        $objQuery = new SC_Query();
182        $objQuery->update("dtb_customer_mail", array('secret_key' => $uniqid), "email = '" .addslashes($email). "'");
183    }
184
185    return $uniqid;
186}
187
188// 既に登録されているかどうか
189function lfIsRegistData ($email) {
190    global $objConn;
191
192    $sql = "SELECT email, mail_flag FROM dtb_customer_mail WHERE email = ?";
193    $mailResult = $objConn->getRow($sql, array($email));
194
195    // NULLも購読とみなす
196    if (count($mailResult) == 0 or ($mailResult[1] != null and $mailResult[1] != 2 )) {
197        return false;
198    } else {
199        return true;
200    }
201}
202
203
204?>
Note: See TracBrowser for help on using the repository browser.