- Timestamp:
- 2010/03/11 10:35:11 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tmp/version-2_5-test/data/class/pages/entry/LC_Page_Entry.php
r18562 r18609 26 26 27 27 /** 28 * 会員登録 (入力ページ)のページクラス.28 * 会員登録のページクラス. 29 29 * 30 30 * @package Page … … 39 39 /** 40 40 * Page を初期化する. 41 * 42 * 以下のプロパティの初期化を行う. 43 * - tpl_mainpage 44 * - tpl_title 45 * - year 46 * - arrPref (mtb_pref からマスタデータを取得する) 47 * - arrJob (mtb_job からマスタデータを取得する) 48 * - arrReminder (mtb_reminder からマスタデータを取得する) 49 * - arrYear 50 * - arrMonth 51 * - arrDay 52 * 53 * また, クライアント・プロキシのキャッシュ制御を "nocache" に設定する. 41 54 * 42 55 * @return void … … 52 65 $this->arrJob = $masterData->getMasterData("mtb_job"); 53 66 $this->arrReminder = $masterData->getMasterData("mtb_reminder"); 54 $this->objDate = new SC_Date(START_BIRTH_YEAR, date("Y",strtotime("now"))); 55 $this->arrYear = $this->objDate->getYear('', 1950); // 日付プルダウン設定 56 $this->arrMonth = $this->objDate->getMonth(); 57 $this->arrDay = $this->objDate->getDay(); 67 68 // 生年月日選択肢の取得 69 $objDate = new SC_Date(START_BIRTH_YEAR, date("Y",strtotime("now"))); 70 $this->arrYear = $objDate->getYear('', 1950, ''); 71 $this->arrMonth = $objDate->getMonth(true); 72 $this->arrDay = $objDate->getDay(true); 73 74 $this->httpCacheControl('nocache'); 58 75 } 59 76 … … 61 78 * Page のプロセス. 62 79 * 80 * <b>概要</b> 81 * 82 * 一般ユーザーが個人情報を入力し, 会員登録を行う. 83 * 会員登録完了時, ユーザーのメールアドレスと店舗管理者へ会員登録完了 84 * の通知メールを送信し, 登録完了画面へリダイレクトを行う. 85 * 86 * <b>アクター</b> 87 * 88 * - 一般ユーザー 89 * 90 * <b>基本フロー</b> 91 * 92 * 遷移の際, トランザクショントークンを使用し, 不正な遷移が発生した場合は 93 * エラーページを表示する. 94 * 95 * <ol> 96 * <li>入力フォーム($_POST['mode'] == '') 97 * <ul> 98 * <li>入力チェックがエラーの場合($_POST['mode'] == 'return')</li> 99 * <li>$_POST が空かつ, $_SERVER['HTTP_REFERER'] に "kiyaku.php" 100 * の文字列が存在しない場合はエラーページを表示する</li> 101 * </ul> 102 * </li> 103 * <li>入力確認画面($_POST['mode'] == 'confirm')</li> 104 * <li>登録完了処理($_POST['mode'] == 'complete')</li> 105 * <li>登録完了画面へリダイレクトを行う</li> 106 * </ol> 107 * 108 * 仮会員登録が有効な場合, 3 の登録完了画面の前に, 仮会員登録メールを送信し, 109 * ユーザーが本会員登録用 URL をクリックした時点で登録を完了する. 110 * 111 * <b>代替フロー</b> 112 * 113 * なし 114 * 115 * <b>特別な要件事項</b> 116 * 117 * - ユーザーが入力した情報は, 空文字, 改行を削除する. 118 * - メールアドレスは, すべて小文字に変換し, DBに格納する. 119 * 120 * <b>事前条件</b> 121 * 122 * アクターがシステムに訪問していること. 123 * 124 * <b>事後条件</b> 125 * 126 * アクターの会員登録が完了していること. 127 * 128 * <b>サブユースケース</b> 129 * 130 * なし 131 * 132 * <b>使用するスーパーグローバル変数</b> 133 * 134 * - $_SERVER['PHP_SELF'] 135 * - $_SERVER['HTTP_REFERER'] 136 * - $_SERVER["REQUEST_METHOD"] 137 * - $_POST["name01"] 138 * - $_POST["name02"] 139 * - $_POST["kana01"] 140 * - $_POST["kana02"] 141 * - $_POST["zip01"] 142 * - $_POST["zip02"] 143 * - $_POST["addr01"] 144 * - $_POST["addr02"] 145 * - $_POST["tel01"] 146 * - $_POST["tel02"] 147 * - $_POST["tel03"] 148 * - $_POST["fax01"] 149 * - $_POST["fax02"] 150 * - $_POST["fax03"] 151 * - $_POST["email"] 152 * - $_POST["email02"] 153 * - $_POST["password"] 154 * - $_POST["password02"] 155 * - $_POST["reminder_answer"] 156 * - $_POST["mode"]('return', 'confirm', 'complate') 157 * 158 * @global $objCampaignSess 63 159 * @return void 64 160 */ … … 72 168 $objDb = new SC_Helper_DB_Ex(); 73 169 $CONF = $objDb->sf_getBasisData(); 74 $objDate = new SC_Date(START_BIRTH_YEAR, date("Y",strtotime("now")));75 170 76 171 $ssl_url = rtrim(SSL_URL,"/"); 77 172 $ssl_url .= $_SERVER['PHP_SELF']; 78 79 173 80 174 // 規約ページからの遷移でなければエラー画面へ遷移する … … 84 178 85 179 // レイアウトデザインを取得 86 $ layout = new SC_Helper_PageLayout_Ex();87 $ layout->sfGetPageLayout($this, false, DEF_LAYOUT);180 $objLayout = new SC_Helper_PageLayout_Ex(); 181 $objLayout->sfGetPageLayout($this, false, DEF_LAYOUT); 88 182 89 183 //---- 登録用カラム配列 … … 127 221 } 128 222 129 // 空白・改行の削除223 // 空白・改行の削除 130 224 $_POST["name01"] = preg_replace('/^[ \r\n]*(.*?)[ \r\n]*$/u', '$1', $_POST["name01"]); 131 225 $_POST["name02"] = preg_replace('/^[ \r\n]*(.*?)[ \r\n]*$/u', '$1', $_POST["name02"]); … … 151 245 $this->arrForm = $_POST; 152 246 153 //SSL用 154 $this->arrForm[ssl_url] = $ssl_url; 155 156 if($this->arrForm['year'] == '----') { 157 $this->arrForm['year'] = ''; 158 } 247 // SSL用 248 $this->arrForm['ssl_url'] = $ssl_url; 159 249 160 250 $this->arrForm['email'] = strtolower($this->arrForm['email']); // emailはすべて小文字で処理 … … 164 254 $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn); 165 255 166 //-- 256 //-- 入力エラーチェック 167 257 $this->arrErr = $this->lfErrorCheck($this->arrForm); 168 258 169 259 if ($this->arrErr || $_POST["mode"] == "return") { // 入力エラーのチェック 170 foreach($ arrRegistColumn as $key) {171 $this->$key ['column'] = $this->arrForm[$key['column']];260 foreach($this->arrForm as $key => $val) { 261 $this->$key = $val; 172 262 } 173 263 174 264 } else { 175 265 176 //-- 266 //-- 確認 177 267 if ($_POST["mode"] == "confirm") { 178 268 foreach($this->arrForm as $key => $val) { … … 189 279 } 190 280 191 //-- 281 //-- 会員登録と完了画面 192 282 if ($_POST["mode"] == "complete") { 193 283 // キャンペーンからの遷移の時用の値 … … 204 294 $this->tpl_title = '会員登録(完了ページ)'; 205 295 206 // 296 // 完了メール送信 207 297 $this->name01 = $_POST['name01']; 208 298 $this->name02 = $_POST['name02']; … … 210 300 $objMailText->assignobj($this); 211 301 212 $ mailHelper= new SC_Helper_Mail_Ex();302 $objHelperMail = new SC_Helper_Mail_Ex(); 213 303 $objQuery = new SC_Query(); 304 214 305 // 仮会員が有効の場合 215 306 if(CUSTOMER_CONFIRM_MAIL == true) { 216 $subject = $ mailHelper->sfMakesubject($objQuery, $objMailText, $this,'会員登録のご確認');307 $subject = $objHelperMail->sfMakeSubject('会員登録のご確認'); 217 308 $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl"); 218 309 } else { 219 $subject = $ mailHelper->sfMakesubject($objQuery, $objMailText, $this,'会員登録のご完了');310 $subject = $objHelperMail->sfMakeSubject('会員登録のご完了'); 220 311 $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl"); 221 312 // ログイン状態にする … … 225 316 $objMail = new SC_SendMail(); 226 317 $objMail->setItem( 227 '' // 宛先 228 , $subject // サブジェクト 229 , $toCustomerMail // 本文 230 , $CONF["email03"] // 配送元アドレス 231 , $CONF["shop_name"] // 配送元 名前 232 , $CONF["email03"] // reply_to 233 , $CONF["email04"] // return_path 234 , $CONF["email04"] // Errors_to 235 ); 318 '' // 宛先 319 , $subject // サブジェクト 320 , $toCustomerMail // 本文 321 , $CONF["email03"] // 配送元アドレス 322 , $CONF["shop_name"] // 配送元 名前 323 , $CONF["email03"] // reply_to 324 , $CONF["email04"] // return_path 325 , $CONF["email04"] // Errors_to 326 , $CONF["email01"] // Bcc 327 ); 236 328 // 宛先の設定 237 329 $name = $_POST["name01"] . $_POST["name02"] ." 様"; … … 247 339 } 248 340 249 if($this->year == '') {250 $this->year = '----';251 }252 253 341 $this->transactionid = $this->getToken(); 254 342 255 //---- 343 //---- ページ表示 256 344 $objView->assignobj($this); 257 345 // フレームを選択(キャンペーンページから遷移なら変更) … … 267 355 $this->init(); 268 356 $this->tpl_mainpage = 'entry/index.tpl'; // メインテンプレート 269 $this->tpl_title .= '会員登録(1/3)'; // 357 $this->tpl_title .= '会員登録(1/3)'; // ページタイトル 270 358 } 271 359 … … 283 371 $objView = new SC_MobileView(); 284 372 $objCustomer = new SC_Customer(); 285 $objDate = new SC_Date(START_BIRTH_YEAR, date("Y",strtotime("now")));286 373 287 374 // 空メール … … 290 377 $this->tpl_kara_mail_from = $_POST['email']; 291 378 } elseif (MOBILE_USE_KARA_MAIL) { 292 $token = $objMobile->gfPrepareKaraMail('entry/ index.php');379 $token = $objMobile->gfPrepareKaraMail('entry/' . DIR_INDEX_URL); 293 380 if ($token !== false) { 294 381 $this->tpl_mainpage = 'entry/mail.tpl'; … … 341 428 //-- POSTデータの引き継ぎ 342 429 $this->arrForm = $_POST; 343 344 if(isset($this->arrForm['year'])345 && $this->arrForm['year'] == '----') {346 $this->arrForm['year'] = '';347 }348 349 430 $this->arrForm['email'] = strtolower($this->arrForm['email']); // emailはすべて小文字で処理 350 431 … … 367 448 } 368 449 369 //-- 450 //-- 入力エラーチェック 370 451 if ($_POST["mode"] == "set1") { 371 452 $this->arrErr = $this->lfErrorCheck1($this->arrForm); … … 382 463 } 383 464 384 foreach($ arrRegistColumn as $key) {385 $this->$key ['column'] = $this->arrForm[$key['column']];465 foreach($this->arrForm as $key => $val) { 466 $this->$key = $val; 386 467 } 387 468 … … 406 487 } else { 407 488 408 //-- 489 //-- テンプレート設定 409 490 if ($_POST["mode"] == "set1") { 410 491 $this->tpl_mainpage = 'entry/set1.tpl'; … … 415 496 416 497 if (@$this->arrForm['pref'] == "" && @$this->arrForm['addr01'] == "" && @$this->arrForm['addr02'] == "") { 417 $address = $this->lfGetAddress($_REQUEST['zip01'].$_REQUEST['zip02']);498 $address = SC_Utils_Ex::sfGetAddress($_REQUEST['zip01'].$_REQUEST['zip02']); 418 499 $this->pref = @$address[0]['state']; 419 500 $this->addr01 = @$address[0]['city'] . @$address[0]['town']; 420 501 } 421 502 } elseif ($_POST["mode"] == "confirm") { 422 // パスワード表示503 // パスワード表示 423 504 $passlen = strlen($this->arrForm['password']); 424 505 $this->passlen = $this->lfPassLen($passlen); 425 506 426 // メール受け取り507 // メール受け取り 427 508 if (!isset($this->arrForm['mailmaga_flg'])) $this->arrForm['mailmaga_flg'] = ""; 428 509 if (strtolower($this->arrForm['mailmaga_flg']) == "on") { … … 454 535 455 536 456 //-- 537 //-- 仮登録と完了画面 457 538 if ($_POST["mode"] == "complete") { 458 539 … … 463 544 $this->tpl_title = '会員登録(1/3)'; 464 545 $this->arrErr = $arrErr; 465 //---- 546 //---- ページ表示 466 547 $objView->assignobj($this); 467 548 $objView->display(SITE_FRAME); … … 475 556 $this->tpl_title = '会員登録(2/3)'; 476 557 $this->arrErr = $arrErr; 477 //---- 558 //---- ページ表示 478 559 $objView->assignobj($this); 479 560 $objView->display(SITE_FRAME); … … 487 568 $this->tpl_title = '会員登録(3/3)'; 488 569 $this->arrErr = $arrErr; 489 //---- 570 //---- ページ表示 490 571 $objView->assignobj($this); 491 572 $objView->display(SITE_FRAME); … … 501 582 "id" => $this->uniqid, 502 583 session_name() => session_id()); 503 $this->sendRedirect($this->getLocation(MOBILE_URL_DIR . "regist/ index.php", $param));584 $this->sendRedirect($this->getLocation(MOBILE_URL_DIR . "regist/" . DIR_INDEX_URL, $param)); 504 585 exit; 505 586 } … … 508 589 $this->tpl_title = '会員登録(完了ページ)'; 509 590 510 $objMobile->sfMobileSetExtSessionId('id', $this->uniqid, 'regist/ index.php');511 512 // 591 $objMobile->sfMobileSetExtSessionId('id', $this->uniqid, 'regist/' . DIR_INDEX_URL); 592 593 // 仮登録完了メール送信 513 594 $this->to_name01 = $_POST['name01']; 514 595 $this->to_name02 = $_POST['name02']; … … 522 603 // Moba8パラメーターを保持する場合はカラム追加 523 604 if (isset($_SESSION['a8'])) $this->etc_value = "&a8=". $_SESSION['a8']; 524 $subject = $objHelperMail->sfMakeSubject( $objQuery, $objMailText, $this,'会員登録のご確認');605 $subject = $objHelperMail->sfMakeSubject('会員登録のご確認'); 525 606 $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl"); 526 607 } else { 527 $subject = $objHelperMail->sfMake subject($objQuery, $objMailText, $this,'会員登録のご完了');608 $subject = $objHelperMail->sfMakeSubject('会員登録のご完了'); 528 609 $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl"); 529 610 // ログイン状態にする … … 533 614 $objMail = new SC_SendMail(); 534 615 $objMail->setItem( 535 '' //宛先536 , $subject //サブジェクト537 , $toCustomerMail //本文538 , $CONF["email03"] //配送元アドレス539 , $CONF["shop_name"] // 配送元名前540 , $CONF["email03"] //reply_to541 , $CONF["email04"] //return_path542 , $CONF["email04"] //Errors_to543 , $CONF["email01"] //Bcc544 616 '' // 宛先 617 , $subject // サブジェクト 618 , $toCustomerMail // 本文 619 , $CONF["email03"] // 配送元アドレス 620 , $CONF["shop_name"] // 配送元 名前 621 , $CONF["email03"] // reply_to 622 , $CONF["email04"] // return_path 623 , $CONF["email04"] // Errors_to 624 , $CONF["email01"] // Bcc 625 ); 545 626 // 宛先の設定 546 627 $name = $_POST["name01"] . $_POST["name02"] ." 様"; … … 555 636 } 556 637 557 //---- 638 //---- ページ表示 558 639 $objView->assignobj($this); 559 640 $objView->display(SITE_FRAME); … … 647 728 648 729 649 /* メルマガ会員機能は現在停止中 650 651 652 //-- 730 /* メルマガ会員機能は現在停止中 2007/03/07 731 732 733 //-- 非会員でメルマガ登録しているかの判定 653 734 $sql = "SELECT count(*) FROM dtb_customer_mail WHERE email = ?"; 654 735 $mailResult = $objConn->getOne($sql, array($arrRegist["email"])); 655 736 656 //-- 737 //-- メルマガ仮登録実行 657 738 $arrRegistMail["email"] = $arrRegist["email"]; 658 739 if ($array["mailmaga_flg"] == 1) { … … 668 749 if ($mailResult == 1) { 669 750 $objQuery->update("dtb_customer_mail", $arrRegistMail, "email = '" .addslashes($arrRegistMail["email"]). "'"); 670 } else { // 751 } else { // 新規登録の場合 671 752 $arrRegistMail["create_date"] = "now()"; 672 753 $objQuery->insert("dtb_customer_mail", $arrRegistMail); … … 678 759 } 679 760 680 //---- 761 //---- 取得文字列の変換 681 762 function lfConvertParam($array, $arrRegistColumn) { 682 763 /* … … 721 802 $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK")); 722 803 723 // 現会員の判定 →現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可804 // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可 724 805 if (strlen($array["email"]) > 0) { 725 806 $array["email"] = strtolower($array["email"]); … … 763 844 $objErr->doFunc(array("メールマガジン", "mailmaga_flg") ,array("SELECT_CHECK", "NUM_CHECK")); 764 845 765 $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_ DATE"));846 $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_BIRTHDAY")); 766 847 $objErr->doFunc(array("メールマガジン", 'mailmaga_flg'), array("SELECT_CHECK")); 767 848 return $objErr->arrErr; … … 782 863 // {{{ mobile functions 783 864 784 // 郵便番号から住所の取得785 function lfGetAddress($zipcode) {786 787 $conn = new SC_DBconn(ZIP_DSN);788 789 // 郵便番号検索文作成790 $zipcode = mb_convert_kana($zipcode ,"n");791 $sqlse = "SELECT state, city, town FROM mtb_zip WHERE zipcode = ?";792 793 $data_list = $conn->getAll($sqlse, array($zipcode));794 795 // インデックスと値を反転させる。796 $arrREV_PREF = array_flip($this->arrPref);797 798 /*799 総務省からダウンロードしたデータをそのままインポートすると800 以下のような文字列が入っているので 対策する。801 ・(1・19丁目)802 ・以下に掲載がない場合803 */804 $town = $data_list[0]['town'];805 $town = ereg_replace("(.*)$","",$town);806 $town = ereg_replace("以下に掲載がない場合","",$town);807 $data_list[0]['town'] = $town;808 $data_list[0]['state'] = $arrREV_PREF[$data_list[0]['state']];809 810 return $data_list;811 }812 813 865 //---- 入力エラーチェック 814 866 function lfErrorCheck1($array) { … … 823 875 $objErr->doFunc(array('メールアドレス', "email", MTEXT_LEN) ,array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK", "MOBILE_EMAIL_CHECK")); 824 876 825 // 現会員の判定 →現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可877 // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可 826 878 if (strlen($array["email"]) > 0) { 827 879 $array['email'] = strtolower($array['email']); … … 863 915 864 916 $objErr->doFunc(array("性別", "sex") ,array("SELECT_CHECK", "NUM_CHECK")); 865 $objErr->doFunc(array("生年月日 (年)", "year", 4), array("EXIST_CHECK", "SPTAB_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK")); 866 if (!isset($objErr->arrErr['year']) && strlen($array['year'] > 0)) { 867 $objErr->doFunc(array("生年月日 (年)", "year", $this->objDate->getStartYear()), array("MIN_CHECK")); 868 $objErr->doFunc(array("生年月日 (年)", "year", $this->objDate->getEndYear()), array("MAX_CHECK")); 869 } 870 $objErr->doFunc(array("生年月日 (月日)", "month", "day"), array("SELECT_CHECK")); 871 if (!isset($objErr->arrErr['year']) && !isset($objErr->arrErr['month']) && !isset($objErr->arrErr['day'])) { 872 $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_DATE")); 873 } 917 $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_BIRTHDAY")); 874 918 875 919 return $objErr->arrErr;
Note: See TracChangeset
for help on using the changeset viewer.