- Timestamp:
- 2011/01/08 00:36:33 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php
r19852 r19853 34 34 class LC_Page_Entry extends LC_Page { 35 35 36 // {{{ properties 37 38 /** フォームパラメータの配列 */ 39 var $objFormParam; 40 41 36 42 // }}} 37 43 // {{{ functions … … 39 45 /** 40 46 * Page を初期化する. 41 *42 * 以下のプロパティの初期化を行う.43 * - tpl_title44 * - year45 * - arrPref (mtb_pref からマスタデータを取得する)46 * - arrJob (mtb_job からマスタデータを取得する)47 * - arrReminder (mtb_reminder からマスタデータを取得する)48 * - arrYear49 * - arrMonth50 * - arrDay51 *52 * また, クライアント・プロキシのキャッシュ制御を "nocache" に設定する.53 *54 47 * @return void 55 48 */ … … 82 75 $this->sendResponse(); 83 76 } 77 78 /* パラメータ情報の初期化 */ 79 function lfInitParam() { 80 81 $this->objFormParam->addParam("お名前(姓)", 'name01', STEXT_LEN, "aKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); 82 $this->objFormParam->addParam("お名前(名)", 'name02', STEXT_LEN, "aKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" , "MAX_LENGTH_CHECK")); 83 $this->objFormParam->addParam("お名前(フリガナ・姓)", 'kana01', STEXT_LEN, "CKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK")); 84 $this->objFormParam->addParam("お名前(フリガナ・名)", 'kana02', STEXT_LEN, "CKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK")); 85 $this->objFormParam->addParam("パスワード", 'password', STEXT_LEN, "a", array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK")); 86 $this->objFormParam->addParam("パスワード確認用の質問", "reminder", STEXT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK")); 87 $this->objFormParam->addParam("パスワード確認用の質問の答え", "reminder_answer", STEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" , "MAX_LENGTH_CHECK")); 88 $this->objFormParam->addParam("郵便番号1", "zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK")); 89 $this->objFormParam->addParam("郵便番号2", "zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK")); 90 $this->objFormParam->addParam("都道府県", 'pref', INT_LEN, "n", array("EXIST_CHECK","NUM_CHECK")); 91 $this->objFormParam->addParam("住所1", "addr01", MTEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); 92 $this->objFormParam->addParam("住所2", "addr02", MTEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); 93 $this->objFormParam->addParam("お電話番号1", 'tel01', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" )); 94 $this->objFormParam->addParam("お電話番号2", 'tel02', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" )); 95 $this->objFormParam->addParam("お電話番号3", 'tel03', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" )); 96 $this->objFormParam->addParam("性別", "sex", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK")); 97 $this->objFormParam->addParam("職業", "job", INT_LEN, "n", array("NUM_CHECK")); 98 $this->objFormParam->addParam("年", "year", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false); 99 $this->objFormParam->addParam("月", "month", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false); 100 $this->objFormParam->addParam("日", "day", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false); 101 102 if ($this->isMobile === false){ 103 $this->objFormParam->addParam("FAX番号1", 'fax01', "n", array("SPTAB_CHECK")); 104 $this->objFormParam->addParam("FAX番号2", 'fax02', "n", array("SPTAB_CHECK")); 105 $this->objFormParam->addParam("FAX番号3", 'fax03', "n", array("SPTAB_CHECK")); 106 $this->objFormParam->addParam("メールマガジン", "mailmaga_flg", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK")); 107 $this->objFormParam->addParam("パスワード(確認)", 'password02', STEXT_LEN, "a", array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK"), "", false); 108 $this->objFormParam->addParam('メールアドレス', "email", MTEXT_LEN, "a", array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 109 $this->objFormParam->addParam('メールアドレス(確認)', "email02", MTEXT_LEN, "a", array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK","SPTAB_CHECK" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"), "", false); 110 } else { 111 $this->objFormParam->addParam('メールアドレス', "email", MTEXT_LEN, "a", array("EXIST_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK","MOBILE_EMAIL_CHECK")); 112 } 113 } 84 114 85 115 /** 86 * Page のプロセス. 87 * 88 * <b>概要</b> 89 * 90 * 一般ユーザーが個人情報を入力し, 会員登録を行う. 91 * 会員登録完了時, ユーザーのメールアドレスと店舗管理者へ会員登録完了 92 * の通知メールを送信し, 登録完了画面へリダイレクトを行う. 93 * 94 * <b>アクター</b> 95 * 96 * - 一般ユーザー 97 * 98 * <b>基本フロー</b> 99 * 100 * 遷移の際, トランザクショントークンを使用し, 不正な遷移が発生した場合は 101 * エラーページを表示する. 102 * 103 * <ol> 104 * <li>入力フォーム($_POST['mode'] == '') 105 * <ul> 106 * <li>入力チェックがエラーの場合($_POST['mode'] == 'return')</li> 107 * <li>$_POST が空かつ, $_SERVER['HTTP_REFERER'] に "kiyaku.php" 108 * の文字列が存在しない場合はエラーページを表示する</li> 109 * </ul> 110 * </li> 111 * <li>入力確認画面($_POST['mode'] == 'confirm')</li> 112 * <li>登録完了処理($_POST['mode'] == 'complete')</li> 113 * <li>登録完了画面へリダイレクトを行う</li> 114 * </ol> 115 * 116 * 仮会員登録が有効な場合, 3 の登録完了画面の前に, 仮会員登録メールを送信し, 117 * ユーザーが本会員登録用 URL をクリックした時点で登録を完了する. 118 * 119 * <b>代替フロー</b> 120 * 121 * なし 122 * 123 * <b>特別な要件事項</b> 124 * 125 * - ユーザーが入力した情報は, 空文字, 改行を削除する. 126 * - メールアドレスは, すべて小文字に変換し, DBに格納する. 127 * 128 * <b>事前条件</b> 129 * 130 * アクターがシステムに訪問していること. 131 * 132 * <b>事後条件</b> 133 * 134 * アクターの会員登録が完了していること. 135 * 136 * <b>サブユースケース</b> 137 * 138 * なし 139 * 140 * <b>使用するスーパーグローバル変数</b> 141 * 142 * - $_SERVER['PHP_SELF'] 143 * - $_SERVER['HTTP_REFERER'] 144 * - $_SERVER["REQUEST_METHOD"] 145 * - $_POST["name01"] 146 * - $_POST["name02"] 147 * - $_POST["kana01"] 148 * - $_POST["kana02"] 149 * - $_POST["zip01"] 150 * - $_POST["zip02"] 151 * - $_POST["addr01"] 152 * - $_POST["addr02"] 153 * - $_POST["tel01"] 154 * - $_POST["tel02"] 155 * - $_POST["tel03"] 156 * - $_POST["fax01"] 157 * - $_POST["fax02"] 158 * - $_POST["fax03"] 159 * - $_POST["email"] 160 * - $_POST["email02"] 161 * - $_POST["password"] 162 * - $_POST["password02"] 163 * - $_POST["reminder_answer"] 164 * - $_POST["mode"]('return', 'confirm', 'complate') 165 * 116 * Page のプロセス 166 117 * @return void 167 118 */ 168 119 function action() { 169 120 $objView = new SC_SiteView(); 170 $objCustomer = new SC_Customer();171 121 $objDb = new SC_Helper_DB_Ex(); 172 122 $CONF = $objDb->sfGetBasisData(); 123 $objQuery = new SC_Query(); 173 124 174 125 // PC時は規約ページからの遷移でなければエラー画面へ遷移する 175 126 $this->lfCheckReferer(); 176 127 177 //---- 登録用カラム配列 178 $arrRegistColumn = array( 179 array( "column" => "name01", "convert" => "aKV" ), 180 array( "column" => "name02", "convert" => "aKV" ), 181 array( "column" => "kana01", "convert" => "CKV" ), 182 array( "column" => "kana02", "convert" => "CKV" ), 183 array( "column" => "zip01", "convert" => "n" ), 184 array( "column" => "zip02", "convert" => "n" ), 185 array( "column" => "pref", "convert" => "n" ), 186 array( "column" => "addr01", "convert" => "aKV" ), 187 array( "column" => "addr02", "convert" => "aKV" ), 188 array( "column" => "email", "convert" => "a" ), 189 array( "column" => "email02", "convert" => "a" ), 190 array( "column" => "email_mobile", "convert" => "a" ), 191 array( "column" => "email_mobile02", "convert" => "a" ), 192 array( "column" => "tel01", "convert" => "n" ), 193 array( "column" => "tel02", "convert" => "n" ), 194 array( "column" => "tel03", "convert" => "n" ), 195 array( "column" => "fax01", "convert" => "n" ), 196 array( "column" => "fax02", "convert" => "n" ), 197 array( "column" => "fax03", "convert" => "n" ), 198 array( "column" => "sex", "convert" => "n" ), 199 array( "column" => "job", "convert" => "n" ), 200 array( "column" => "birth", "convert" => "n" ), 201 array( "column" => "year", "convert" => "n" ), 202 array( "column" => "month", "convert" => "n" ), 203 array( "column" => "day", "convert" => "n" ), 204 array( "column" => "reminder", "convert" => "n" ), 205 array( "column" => "reminder_answer", "convert" => "aKV"), 206 array( "column" => "password", "convert" => "a" ), 207 array( "column" => "password02", "convert" => "a" ), 208 array( "column" => "mailmaga_flg", "convert" => "n" ), 209 ); 210 211 //---- 登録除外用カラム配列 212 $arrRejectRegistColumn = array("year", "month", "day", "email02", "email_mobile02", "password02"); 128 // mobile用(戻るボタンでの遷移かどうかを判定) 129 if (!empty($_POST["return"])) { 130 $_POST["mode"] = "return"; 131 } 132 133 // パラメータ管理クラス,パラメータ情報の初期化 134 $this->objFormParam = new SC_FormParam(); 135 $this->lfInitParam(); 136 $this->objFormParam->setParam($_POST); // POST値の取得 213 137 214 138 if ($_SERVER["REQUEST_METHOD"] == "POST") { … … 218 142 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true); 219 143 } 220 221 // 空白・改行の削除 222 foreach ($arrRegistColumn as $item){ 223 $_POST["${item["column"]}"] = preg_replace('/^[ \r\n]*(.*?)[ \r\n]*$/u', '$1', $_POST["${item["column"]}"]); 224 } 225 226 //-- POSTデータの引き継ぎ 227 $this->arrForm = $_POST; 228 229 // SSL用 230 $this->arrForm['ssl_url'] = rtrim(HTTPS_URL,"/").$_SERVER['PHP_SELF']; 231 232 // 233 $this->arrForm['email'] = strtolower($this->arrForm['email']); // emailはすべて小文字で処理 234 $this->arrForm['email02'] = strtolower($this->arrForm['email02']); // emailはすべて小文字で処理 235 236 //-- 入力データの変換 237 $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn); 238 // mobile用 239 if (!empty($_POST["return"])) { 240 $_POST["mode"] = "return"; 241 } 242 144 145 $this->objFormParam->convParam(); 146 $this->objFormParam->toLower('email'); 147 $this->objFormParam->toLower('email02'); 148 $this->arrForm = $this->objFormParam->getHashArray(); 149 150 //-- 確認 151 if ($_POST["mode"] == "confirm") { 152 153 $this->arrErr = $this->lfErrorCheck(); 243 154 244 //-- 入力エラーチェック 245 $this->arrErr = $this->lfErrorCheck($this->arrForm); 246 247 if ($this->arrErr || $_POST["mode"] == "return") { // 入力エラーのチェック 248 foreach($arrRegistColumn as $key) { 249 $this->$key['column'] = $this->arrForm[$key['column']]; 250 } 251 } else { 252 253 //-- 確認 254 if ($_POST["mode"] == "confirm") { 255 foreach($this->arrForm as $key => $val) { 256 if ($key != "mode" && $key != "subm" && $key != "transactionid") $this->list_data[ $key ] = $val; 257 } 155 // 入力エラーなし 156 if(count($this->arrErr) == 0) { 157 158 $this->list_data = $this->objFormParam->getHashArray(); 159 258 160 //パスワード表示 259 161 $passlen = strlen($this->arrForm['password']); 260 162 $this->passlen = SC_Utils_Ex::lfPassLen($passlen); 261 163 262 164 $this->tpl_mainpage = 'entry/confirm.tpl'; 263 165 $this->tpl_title = '会員登録(確認ページ)'; 264 265 166 } 266 167 168 } elseif ($_POST["mode"] == "complete") { 267 169 //-- 会員登録と完了画面 268 if ($_POST["mode"] == "complete") { 269 // 会員情報の登録 270 $this->CONF = $CONF; 271 $this->uniqid = $this->lfRegistData ($this->arrForm, $arrRegistColumn, $arrRejectRegistColumn, CUSTOMER_CONFIRM_MAIL); 272 273 $this->tpl_mainpage = 'entry/complete.tpl'; 274 $this->tpl_title = '会員登録(完了ページ)'; 275 276 // 完了メール送信 277 $this->name01 = $_POST['name01']; 278 $this->name02 = $_POST['name02']; 279 $objMailText = new SC_SiteView(); 280 $objMailText->assignobj($this); 281 282 $objHelperMail = new SC_Helper_Mail_Ex(); 283 $objQuery = new SC_Query(); 284 285 // 仮会員が有効の場合 286 if(CUSTOMER_CONFIRM_MAIL == true) { 287 $subject = $objHelperMail->sfMakeSubject('会員登録のご確認'); 288 $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl"); 289 } else { 290 $subject = $objHelperMail->sfMakeSubject('会員登録のご完了'); 291 $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl"); 292 // ログイン状態にする 293 $objCustomer->setLogin($_POST["email"]); 294 } 295 296 $objMail = new SC_SendMail(); 297 $objMail->setItem( 298 '' // 宛先 299 , $subject // サブジェクト 300 , $toCustomerMail // 本文 301 , $CONF["email03"] // 配送元アドレス 302 , $CONF["shop_name"] // 配送元 名前 303 , $CONF["email03"] // reply_to 304 , $CONF["email04"] // return_path 305 , $CONF["email04"] // Errors_to 306 , $CONF["email01"] // Bcc 307 ); 308 // 宛先の設定 309 $name = $_POST["name01"] . $_POST["name02"] ." 様"; 310 $objMail->setTo($_POST["email"], $name); 311 $objMail->sendMail(); 312 313 // 完了ページに移動させる。 314 $customer_id = $objQuery->get("customer_id", "dtb_customer", "secret_key = ?", array($this->uniqid)); 315 SC_Response_Ex::sendRedirect('complete.php', array("ci" => $customer_id)); 316 exit; 317 318 } 170 171 // 会員情報の登録 172 $this->CONF = $CONF; 173 $this->uniqid = $this->lfRegistData(); 174 175 $this->tpl_mainpage = 'entry/complete.tpl'; 176 $this->tpl_title = '会員登録(完了ページ)'; 177 178 $this->lfSendMail(); 179 180 // 完了ページに移動させる。 181 $customer_id = $objQuery->get("customer_id", "dtb_customer", "secret_key = ?", array($this->uniqid)); 182 SC_Response_Ex::sendRedirect('complete.php', array("ci" => $customer_id)); 183 exit; 184 319 185 } 320 186 } … … 335 201 336 202 // 会員情報の登録 337 function lfRegistData ($array, $arrRegistColumn, $arrRejectRegistColumn, $confirm_flg) {338 203 function lfRegistData() { 204 339 205 $objQuery = new SC_Query(); 340 341 // 登録データの生成 342 foreach ($arrRegistColumn as $data) { 343 if (strlen($array[ $data["column"] ]) > 0 && ! in_array($data["column"], $arrRejectRegistColumn)) { 344 $arrRegist[ $data["column"] ] = $array[ $data["column"] ]; 345 } 346 } 347 348 // 誕生日が入力されている場合 349 if (strlen($array["year"]) > 0 ) { 350 $arrRegist["birth"] = $array["year"] ."/". $array["month"] ."/". $array["day"] ." 00:00:00"; 351 } 352 206 $arrRet = $this->objFormParam->getHashArray(); 207 $sqlval = $this->objFormParam->getDbArray(); 208 209 // 登録データの作成 210 $sqlval['birth'] = SC_Utils_Ex::sfGetTimestamp($arrRet['year'], $arrRet['month'], $arrRet['day']); 211 353 212 // パスワードの暗号化 354 $arrRegist["password"] = sha1($arrRegist["password"] . ":" . AUTH_MAGIC); 355 213 $sqlval["password"] = sha1($arrRegist["password"] . ":" . AUTH_MAGIC); 214 215 // 重複しない会員登録キーを発行する。 216 $count = 1; 217 while ($count != 0) { 218 $uniqid = SC_Utils_Ex::sfGetUniqRandomId("r"); 219 $count = $objQuery->count("dtb_customer", "secret_key = ?", array($uniqid)); 220 } 221 356 222 // 仮会員登録の場合 357 if($confirm_flg == true) { 358 // 重複しない会員登録キーを発行する。 359 $count = 1; 360 while ($count != 0) { 361 $uniqid = SC_Utils_Ex::sfGetUniqRandomId("t"); 362 $count = $objQuery->count("dtb_customer", "secret_key = ?", array($uniqid)); 363 } 364 switch($array["mailmaga_flg"]) { 365 case 1: 366 $arrRegist["mailmaga_flg"] = 4; 367 break; 368 case 2: 369 $arrRegist["mailmaga_flg"] = 5; 370 break; 371 default: 372 $arrRegist["mailmaga_flg"] = 6; 373 break; 374 } 375 376 $arrRegist["status"] = "1"; // 仮会員 223 if(CUSTOMER_CONFIRM_MAIL == true) { 224 $sqlval["mailmaga_flg"] = $this->lfChangeMailFlg($sqlval["mailmaga_flg"]); 225 $sqlval["status"] = "1"; // 仮会員 377 226 } else { 378 // 重複しない会員登録キーを発行する。 379 $count = 1; 380 while ($count != 0) { 381 $uniqid = SC_Utils_Ex::sfGetUniqRandomId("r"); 382 $count = $objQuery->count("dtb_customer", "secret_key = ?", array($uniqid)); 383 } 384 $arrRegist["status"] = "2"; // 本会員 385 } 386 227 $sqlval["status"] = "2"; // 本会員 228 } 229 387 230 /* 388 231 secret_keyは、テーブルで重複許可されていない場合があるので、 389 232 本会員登録では利用されないがセットしておく。 390 233 */ 391 $ arrRegist["secret_key"] = $uniqid; // 会員登録キー392 $ arrRegist["create_date"] = "now()"; // 作成日393 $ arrRegist["update_date"] = "now()"; // 更新日394 $ arrRegist["first_buy_date"] = ""; // 最初の購入日395 $ arrRegist["point"] = $this->CONF["welcome_point"]; // 入会時ポイント396 397 if ($this->isMobile ) {234 $sqlval["secret_key"] = $uniqid; // 会員登録キー 235 $sqlval["create_date"] = "now()"; // 作成日 236 $sqlval["update_date"] = "now()"; // 更新日 237 $sqlval["first_buy_date"] = ""; // 最初の購入日 238 $sqlval["point"] = $this->CONF["welcome_point"]; // 入会時ポイント 239 240 if ($this->isMobile === true) { 398 241 // 携帯メールアドレス 399 $ arrRegist['email_mobile'] = $arrRegist['email'];242 $sqlval['email_mobile'] = $sqlval['email']; 400 243 //PHONE_IDを取り出す 401 $phoneId = SC_MobileUserAgent::getId(); 402 $arrRegist['mobile_phone_id'] = $phoneId; 403 } 404 244 $sqlval['mobile_phone_id'] = SC_MobileUserAgent::getId(); 245 } 246 405 247 //-- 仮登録実行 406 248 $objQuery->begin(); 407 408 $arrRegist['customer_id'] = $objQuery->nextVal('dtb_customer_customer_id'); 409 $objQuery->insert("dtb_customer", $arrRegist); 249 $sqlval['customer_id'] = $objQuery->nextVal('dtb_customer_customer_id'); 250 $objQuery->insert("dtb_customer", $sqlval); 410 251 411 252 $objQuery->commit(); 412 253 413 254 return $uniqid; 414 255 } 415 416 //---- 取得文字列の変換 417 function lfConvertParam($array, $arrRegistColumn) { 418 /* 419 * 文字列の変換 420 * K : 「半角(ハンカク)片仮名」を「全角片仮名」に変換 421 * C : 「全角ひら仮名」を「全角かた仮名」に変換 422 * V : 濁点付きの文字を一文字に変換。"K","H"と共に使用します 423 * n : 「全角」数字を「半角(ハンカク)」に変換 424 * a : 全角英数字を半角英数字に変換する 425 */ 426 // カラム名とコンバート情報 427 foreach ($arrRegistColumn as $data) { 428 $arrConvList[ $data["column"] ] = $data["convert"]; 429 } 430 // 文字変換 431 foreach ($arrConvList as $key => $val) { 432 // POSTされてきた値のみ変換する。 433 if(isset($array[$key]) && strlen($array[$key]) > 0) { 434 $array[$key] = mb_convert_kana($array[$key] ,$val); 435 } 436 } 437 return $array; 438 } 256 257 function lfSendMail(){ 258 // 完了メール送信 259 $arrRet = $this->objFormParam->getHashArray(); 260 $this->name01 = $arrRet['name01']; 261 $this->name02 = $arrRet['name02']; 262 $objMailText = new SC_SiteView(); 263 $objMailText->assignobj($this); 264 265 $objHelperMail = new SC_Helper_Mail_Ex(); 266 $objQuery = new SC_Query(); 267 $objCustomer = new SC_Customer(); 268 269 // 仮会員が有効の場合 270 if(CUSTOMER_CONFIRM_MAIL == true) { 271 $subject = $objHelperMail->sfMakeSubject('会員登録のご確認'); 272 $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl"); 273 } else { 274 $subject = $objHelperMail->sfMakeSubject('会員登録のご完了'); 275 $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl"); 276 // ログイン状態にする 277 $objCustomer->setLogin($arrRet["email"]); 278 } 279 280 $objMail = new SC_SendMail(); 281 $objMail->setItem( 282 '' // 宛先 283 , $subject // サブジェクト 284 , $toCustomerMail // 本文 285 , $CONF["email03"] // 配送元アドレス 286 , $CONF["shop_name"] // 配送元 名前 287 , $CONF["email03"] // reply_to 288 , $CONF["email04"] // return_path 289 , $CONF["email04"] // Errors_to 290 , $CONF["email01"] // Bcc 291 ); 292 // 宛先の設定 293 $name = $arrRet["name01"] . $arrRet["name02"] ." 様"; 294 $objMail->setTo($arrRet["email"], $name); 295 $objMail->sendMail(); 296 } 297 439 298 440 299 //---- 入力エラーチェック 441 300 function lfErrorCheck($array) { 442 301 443 $objErr = new SC_CheckError($array); 444 445 $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); 446 $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" , "MAX_LENGTH_CHECK")); 447 $objErr->doFunc(array("お名前(フリガナ・姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK")); 448 $objErr->doFunc(array("お名前(フリガナ・名)", 'kana02', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK")); 449 $objErr->doFunc(array("パスワード", 'password', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK", "NUM_RANGE_CHECK")); 450 $objErr->doFunc(array("パスワード確認用の質問", "reminder") ,array("SELECT_CHECK", "NUM_CHECK")); 451 $objErr->doFunc(array("パスワード確認用の質問の答え", "reminder_answer", STEXT_LEN) ,array("EXIST_CHECK","SPTAB_CHECK" , "MAX_LENGTH_CHECK")); 452 $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK")); 453 $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK")); 302 // 入力データを渡す。 303 $arrRet = $this->objFormParam->getHashArray(); 304 $objErr = new SC_CheckError($arrRet); 305 $objErr->arrErr = $this->objFormParam->checkError(); 306 307 $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03"),array("TEL_CHECK")); 454 308 $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK")); 455 $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));456 $objErr->doFunc(array("住所1", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));457 $objErr->doFunc(array("住所2", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));458 $objErr->doFunc(array("お電話番号1", 'tel01'), array("EXIST_CHECK","SPTAB_CHECK" ));459 $objErr->doFunc(array("お電話番号2", 'tel02'), array("EXIST_CHECK","SPTAB_CHECK" ));460 $objErr->doFunc(array("お電話番号3", 'tel03'), array("EXIST_CHECK","SPTAB_CHECK" ));461 $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03") ,array("TEL_CHECK"));462 $objErr->doFunc(array("性別", "sex") ,array("SELECT_CHECK", "NUM_CHECK"));463 309 $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_BIRTHDAY")); 464 465 310 if ($this->isMobile === false){ 466 $objErr->doFunc(array('メールアドレス', "email", MTEXT_LEN) ,array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 467 $objErr->doFunc(array("FAX番号1", 'fax01'), array("SPTAB_CHECK")); 468 $objErr->doFunc(array("FAX番号2", 'fax02'), array("SPTAB_CHECK")); 469 $objErr->doFunc(array("FAX番号3", 'fax03'), array("SPTAB_CHECK")); 311 $objErr->doFunc(array('パスワード', 'パスワード(確認)', "password", "password02") ,array("EQUAL_CHECK")); 312 $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK")); 470 313 $objErr->doFunc(array("FAX番号", "fax01", "fax02", "fax03") ,array("TEL_CHECK")); 471 $objErr->doFunc(array("メールマガジン", "mailmaga_flg") ,array("SELECT_CHECK", "NUM_CHECK")); 472 $objErr->doFunc(array("メールマガジン", 'mailmaga_flg'), array("SELECT_CHECK")); 473 $objErr->doFunc(array("パスワード(確認)", 'password02', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK", "NUM_RANGE_CHECK")); 474 $objErr->doFunc(array('パスワード', 'パスワード(確認)', "password", "password02") ,array("EQUAL_CHECK")); 475 $objErr->doFunc(array('メールアドレス(確認)', "email02", MTEXT_LEN) ,array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK","SPTAB_CHECK" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK")); 476 $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK")); 477 } 478 314 } 315 479 316 // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可 480 if (strlen($array["email"]) > 0) { 481 $array["email"] = strtolower($array["email"]); 482 $objQuery = new SC_Query(); 483 $arrRet = $objQuery->select("email, update_date, del_flg", "dtb_customer","email = ? OR email_mobile = ? ORDER BY del_flg", array($array["email"], $array["email"])); 484 485 if(count($arrRet) > 0) { 486 if($arrRet[0]['del_flg'] != '1') { 487 // 会員である場合 317 $register_user_flg = $this->lfCheckRegisterUserForEmail($arrRet["email"]); 318 switch($register_user_flg) { 319 case 1: 320 $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />"; 321 break; 322 case 2: 323 $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />"; 324 break; 325 default: 326 break; 327 } 328 return $objErr->arrErr; 329 } 330 331 /** 332 * emailアドレスから、登録済み会員や退会済み会員をチェックする 333 * 334 * @return integer 0:登録可能 1:登録済み 2:再登録制限期間内削除ユーザー 335 */ 336 function lfCheckRegisterUserForEmail($email){ 337 $return = 0; 338 339 $objQuery = new SC_Query(); 340 $arrRet = $objQuery->select("email, update_date, del_flg" 341 ,"dtb_customer" 342 ,"email = ? OR email_mobile = ? ORDER BY del_flg" 343 ,array($email, $email) 344 ); 345 346 if(count($arrRet) > 0) { 347 if($arrRet[0]['del_flg'] != '1') { 348 // 会員である場合 349 if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = ""; 350 $return = 1; 351 } else { 352 // 退会した会員である場合 353 $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']); 354 $now_time = time(); 355 $pass_time = $now_time - $leave_time; 356 // 退会から何時間-経過しているか判定する。 357 $limit_time = ENTRY_LIMIT_HOUR * 3600; 358 if($pass_time < $limit_time) { 488 359 if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = ""; 489 $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />"; 490 } else { 491 // 退会した会員である場合 492 $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']); 493 $now_time = time(); 494 $pass_time = $now_time - $leave_time; 495 // 退会から何時間-経過しているか判定する。 496 $limit_time = ENTRY_LIMIT_HOUR * 3600; 497 if($pass_time < $limit_time) { 498 if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = ""; 499 $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />"; 500 } 360 $return = 2; 501 361 } 502 362 } 503 363 } 504 return $ objErr->arrErr;505 } 506 364 return $return; 365 } 366 507 367 //確認ページ用パスワード表示用 508 509 368 function lfPassLen($passlen){ 510 369 $ret = ""; … … 527 386 } 528 387 } 529 388 389 function lfChangeMailFlg($mailmaga_flg){ 390 switch($mailmaga_flg) { 391 case 1: 392 $mailmaga_flg = 4; 393 break; 394 case 2: 395 $mailmaga_flg = 5; 396 break; 397 default: 398 $mailmaga_flg = 6; 399 break; 400 } 401 return $mailmaga_flg; 402 } 530 403 } 531 404 ?>
Note: See TracChangeset
for help on using the changeset viewer.