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 | 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 | // 登録
|
---|
27 | if (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("./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 | //---- 入力エラーチェック
|
---|
107 | function 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 | //---- メルマガ登録
|
---|
133 | function 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 | // 登録されているキーの取得
|
---|
168 | function 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 | // 既に登録されているかどうか
|
---|
189 | function 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 | ?>
|
---|