Index: /branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php
===================================================================
--- /branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php	(revision 19852)
+++ /branches/version-2_5-dev/data/class/pages/entry/LC_Page_Entry.php	(revision 19853)
@@ -34,4 +34,10 @@
 class LC_Page_Entry extends LC_Page {
 
+    // {{{ properties
+
+    /** フォームパラメータの配列 */
+    var $objFormParam;
+    
+    
     // }}}
     // {{{ functions
@@ -39,17 +45,4 @@
     /**
      * Page を初期化する.
-     *
-     * 以下のプロパティの初期化を行う.
-     * - tpl_title
-     * - year
-     * - arrPref (mtb_pref からマスタデータを取得する)
-     * - arrJob (mtb_job からマスタデータを取得する)
-     * - arrReminder (mtb_reminder からマスタデータを取得する)
-     * - arrYear
-     * - arrMonth
-     * - arrDay
-     *
-     * また, クライアント・プロキシのキャッシュ制御を "nocache" に設定する.
-     *
      * @return void
      */
@@ -82,133 +75,64 @@
         $this->sendResponse();
     }
+    
+    /* パラメータ情報の初期化 */
+    function lfInitParam() {
+                         
+        $this->objFormParam->addParam("お名前(姓)", 'name01', STEXT_LEN, "aKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
+        $this->objFormParam->addParam("お名前(名)", 'name02', STEXT_LEN, "aKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" , "MAX_LENGTH_CHECK"));
+        $this->objFormParam->addParam("お名前(フリガナ・姓)", 'kana01', STEXT_LEN, "CKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
+        $this->objFormParam->addParam("お名前(フリガナ・名)", 'kana02', STEXT_LEN, "CKV", array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
+        $this->objFormParam->addParam("パスワード", 'password', STEXT_LEN, "a", array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK"));
+        $this->objFormParam->addParam("パスワード確認用の質問", "reminder", STEXT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK"));
+        $this->objFormParam->addParam("パスワード確認用の質問の答え", "reminder_answer", STEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" , "MAX_LENGTH_CHECK"));
+        $this->objFormParam->addParam("郵便番号1", "zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
+        $this->objFormParam->addParam("郵便番号2", "zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
+        $this->objFormParam->addParam("都道府県", 'pref', INT_LEN, "n", array("EXIST_CHECK","NUM_CHECK"));
+        $this->objFormParam->addParam("住所1", "addr01", MTEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
+        $this->objFormParam->addParam("住所2", "addr02", MTEXT_LEN, "aKV", array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
+        $this->objFormParam->addParam("お電話番号1", 'tel01', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" ));
+        $this->objFormParam->addParam("お電話番号2", 'tel02', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" ));
+        $this->objFormParam->addParam("お電話番号3", 'tel03', TEL_ITEM_LEN, "n", array("EXIST_CHECK","SPTAB_CHECK" ));
+        $this->objFormParam->addParam("性別", "sex", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK"));
+        $this->objFormParam->addParam("職業", "job", INT_LEN, "n", array("NUM_CHECK"));
+        $this->objFormParam->addParam("年", "year", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false);
+        $this->objFormParam->addParam("月", "month", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false);
+        $this->objFormParam->addParam("日", "day", INT_LEN, "n", array("MAX_LENGTH_CHECK"), "", false);
+        
+        if ($this->isMobile === false){
+            $this->objFormParam->addParam("FAX番号1", 'fax01', "n", array("SPTAB_CHECK"));
+            $this->objFormParam->addParam("FAX番号2", 'fax02', "n", array("SPTAB_CHECK"));
+            $this->objFormParam->addParam("FAX番号3", 'fax03', "n", array("SPTAB_CHECK"));
+            $this->objFormParam->addParam("メールマガジン", "mailmaga_flg", INT_LEN, "n", array("EXIST_CHECK", "NUM_CHECK"));
+            $this->objFormParam->addParam("パスワード(確認)", 'password02', STEXT_LEN, "a", array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK"), "", false);
+            $this->objFormParam->addParam('メールアドレス', "email", MTEXT_LEN, "a", array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
+            $this->objFormParam->addParam('メールアドレス(確認)', "email02", MTEXT_LEN, "a", array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK","SPTAB_CHECK" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"), "", false);
+        } else {
+            $this->objFormParam->addParam('メールアドレス', "email", MTEXT_LEN, "a", array("EXIST_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK","MOBILE_EMAIL_CHECK"));
+        }
+    }
 
     /**
-     * Page のプロセス.
-     *
-     * <b>概要</b>
-     *
-     * 一般ユーザーが個人情報を入力し, 会員登録を行う.
-     * 会員登録完了時, ユーザーのメールアドレスと店舗管理者へ会員登録完了
-     * の通知メールを送信し, 登録完了画面へリダイレクトを行う.
-     *
-     * <b>アクター</b>
-     *
-     * - 一般ユーザー
-     *
-     * <b>基本フロー</b>
-     *
-     * 遷移の際, トランザクショントークンを使用し, 不正な遷移が発生した場合は
-     * エラーページを表示する.
-     *
-     * <ol>
-     *   <li>入力フォーム($_POST['mode'] == '')
-     *     <ul>
-     *       <li>入力チェックがエラーの場合($_POST['mode'] == 'return')</li>
-     *       <li>$_POST が空かつ, $_SERVER['HTTP_REFERER'] に "kiyaku.php"
-     *       の文字列が存在しない場合はエラーページを表示する</li>
-     *     </ul>
-     *   </li>
-     *   <li>入力確認画面($_POST['mode'] == 'confirm')</li>
-     *   <li>登録完了処理($_POST['mode'] == 'complete')</li>
-     *   <li>登録完了画面へリダイレクトを行う</li>
-     * </ol>
-     *
-     * 仮会員登録が有効な場合, 3 の登録完了画面の前に, 仮会員登録メールを送信し,
-     * ユーザーが本会員登録用 URL をクリックした時点で登録を完了する.
-     *
-     * <b>代替フロー</b>
-     *
-     * なし
-     *
-     * <b>特別な要件事項</b>
-     *
-     * - ユーザーが入力した情報は, 空文字, 改行を削除する.
-     * - メールアドレスは, すべて小文字に変換し, DBに格納する.
-     *
-     * <b>事前条件</b>
-     *
-     * アクターがシステムに訪問していること.
-     *
-     * <b>事後条件</b>
-     *
-     * アクターの会員登録が完了していること.
-     *
-     * <b>サブユースケース</b>
-     *
-     * なし
-     *
-     * <b>使用するスーパーグローバル変数</b>
-     *
-     * - $_SERVER['PHP_SELF']
-     * - $_SERVER['HTTP_REFERER']
-     * - $_SERVER["REQUEST_METHOD"]
-     * - $_POST["name01"]
-     * - $_POST["name02"]
-     * - $_POST["kana01"]
-     * - $_POST["kana02"]
-     * - $_POST["zip01"]
-     * - $_POST["zip02"]
-     * - $_POST["addr01"]
-     * - $_POST["addr02"]
-     * - $_POST["tel01"]
-     * - $_POST["tel02"]
-     * - $_POST["tel03"]
-     * - $_POST["fax01"]
-     * - $_POST["fax02"]
-     * - $_POST["fax03"]
-     * - $_POST["email"]
-     * - $_POST["email02"]
-     * - $_POST["password"]
-     * - $_POST["password02"]
-     * - $_POST["reminder_answer"]
-     * - $_POST["mode"]('return', 'confirm', 'complate')
-     *
+     * Page のプロセス
      * @return void
      */
     function action() {
         $objView = new SC_SiteView();
-        $objCustomer = new SC_Customer();
         $objDb = new SC_Helper_DB_Ex();
         $CONF = $objDb->sfGetBasisData();
+        $objQuery = new SC_Query();
 
         // PC時は規約ページからの遷移でなければエラー画面へ遷移する
         $this->lfCheckReferer();
         
-		//---- 登録用カラム配列
-        $arrRegistColumn = array(
-                                     array(  "column" => "name01", "convert" => "aKV" ),
-                                     array(  "column" => "name02", "convert" => "aKV" ),
-                                     array(  "column" => "kana01", "convert" => "CKV" ),
-                                     array(  "column" => "kana02", "convert" => "CKV" ),
-                                     array(  "column" => "zip01", "convert" => "n" ),
-                                     array(  "column" => "zip02", "convert" => "n" ),
-                                     array(  "column" => "pref", "convert" => "n" ),
-                                     array(  "column" => "addr01", "convert" => "aKV" ),
-                                     array(  "column" => "addr02", "convert" => "aKV" ),
-                                     array(  "column" => "email", "convert" => "a" ),
-                                     array(  "column" => "email02", "convert" => "a" ),
-                                     array(  "column" => "email_mobile", "convert" => "a" ),
-                                     array(  "column" => "email_mobile02", "convert" => "a" ),
-                                     array(  "column" => "tel01", "convert" => "n" ),
-                                     array(  "column" => "tel02", "convert" => "n" ),
-                                     array(  "column" => "tel03", "convert" => "n" ),
-                                     array(  "column" => "fax01", "convert" => "n" ),
-                                     array(  "column" => "fax02", "convert" => "n" ),
-                                     array(  "column" => "fax03", "convert" => "n" ),
-                                     array(  "column" => "sex", "convert" => "n" ),
-                                     array(  "column" => "job", "convert" => "n" ),
-                                     array(  "column" => "birth", "convert" => "n" ),
-                                     array(  "column" => "year", "convert" => "n" ),
-                                     array(  "column" => "month", "convert" => "n" ),
-                                     array(  "column" => "day", "convert" => "n" ),
-                                     array(  "column" => "reminder", "convert" => "n" ),
-                                     array(  "column" => "reminder_answer", "convert" => "aKV"),
-                                     array(  "column" => "password", "convert" => "a" ),
-                                     array(  "column" => "password02", "convert" => "a" ),
-                                     array(  "column" => "mailmaga_flg", "convert" => "n" ),
-                                 );
-
-        //---- 登録除外用カラム配列
-        $arrRejectRegistColumn = array("year", "month", "day", "email02", "email_mobile02", "password02");
+        // mobile用（戻るボタンでの遷移かどうかを判定）
+        if (!empty($_POST["return"])) {
+            $_POST["mode"] = "return";
+        }
+        
+        // パラメータ管理クラス,パラメータ情報の初期化
+        $this->objFormParam = new SC_FormParam();
+        $this->lfInitParam();
+        $this->objFormParam->setParam($_POST);    // POST値の取得
 
         if ($_SERVER["REQUEST_METHOD"] == "POST") {
@@ -218,103 +142,45 @@
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
             }
-
-            // 空白・改行の削除
-            foreach ($arrRegistColumn as $item){
-            	$_POST["${item["column"]}"] = preg_replace('/^[ 　\r\n]*(.*?)[ 　\r\n]*$/u', '$1', $_POST["${item["column"]}"]);
-            }
-
-            //-- POSTデータの引き継ぎ
-            $this->arrForm = $_POST;
-
-            // SSL用
-            $this->arrForm['ssl_url'] = rtrim(HTTPS_URL,"/").$_SERVER['PHP_SELF'];
-
-            //
-            $this->arrForm['email'] = strtolower($this->arrForm['email']);		// emailはすべて小文字で処理
-            $this->arrForm['email02'] = strtolower($this->arrForm['email02']);	// emailはすべて小文字で処理
-
-            //-- 入力データの変換
-            $this->arrForm = $this->lfConvertParam($this->arrForm, $arrRegistColumn);
-                // mobile用
-                if (!empty($_POST["return"])) {
-                    $_POST["mode"] = "return";
-                }
-
+            
+            $this->objFormParam->convParam();
+            $this->objFormParam->toLower('email');
+            $this->objFormParam->toLower('email02');
+            $this->arrForm = $this->objFormParam->getHashArray();
+     
+            //-- 確認
+            if ($_POST["mode"] == "confirm") {
+
+                $this->arrErr = $this->lfErrorCheck();
                 
-            //-- 入力エラーチェック
-            $this->arrErr = $this->lfErrorCheck($this->arrForm);
-             
-            if ($this->arrErr || $_POST["mode"] == "return") {		// 入力エラーのチェック
-                foreach($arrRegistColumn as $key) {
-                    $this->$key['column'] = $this->arrForm[$key['column']];
-                }            
-            } else {
-               
-                //-- 確認
-                if ($_POST["mode"] == "confirm") {
-                    foreach($this->arrForm as $key => $val) {
-                        if ($key != "mode" && $key != "subm" && $key != "transactionid") $this->list_data[ $key ] = $val;
-                    }
+                // 入力エラーなし
+                if(count($this->arrErr) == 0) {
+                    
+                    $this->list_data = $this->objFormParam->getHashArray();
+                
                     //パスワード表示
                     $passlen = strlen($this->arrForm['password']);
                     $this->passlen = SC_Utils_Ex::lfPassLen($passlen);
-
+    
                     $this->tpl_mainpage = 'entry/confirm.tpl';
                     $this->tpl_title = '会員登録(確認ページ)';
-
                 }
 
+            } elseif ($_POST["mode"] == "complete") {
                 //-- 会員登録と完了画面
-                if ($_POST["mode"] == "complete") {
-                    // 会員情報の登録
-                    $this->CONF = $CONF;
-                    $this->uniqid = $this->lfRegistData ($this->arrForm, $arrRegistColumn, $arrRejectRegistColumn, CUSTOMER_CONFIRM_MAIL);
-
-                    $this->tpl_mainpage = 'entry/complete.tpl';
-                    $this->tpl_title = '会員登録(完了ページ)';
-
-                    // 完了メール送信
-                    $this->name01 = $_POST['name01'];
-                    $this->name02 = $_POST['name02'];
-                    $objMailText = new SC_SiteView();
-                    $objMailText->assignobj($this);
-
-                    $objHelperMail = new SC_Helper_Mail_Ex();
-                    $objQuery = new SC_Query();
-
-                    // 仮会員が有効の場合
-                    if(CUSTOMER_CONFIRM_MAIL == true) {
-                        $subject = $objHelperMail->sfMakeSubject('会員登録のご確認');
-                        $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl");
-                    } else {
-                        $subject = $objHelperMail->sfMakeSubject('会員登録のご完了');
-                        $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl");
-                        // ログイン状態にする
-                        $objCustomer->setLogin($_POST["email"]);
-                    }
-
-                    $objMail = new SC_SendMail();
-                    $objMail->setItem(
-                                          ''                    // 宛先
-                                        , $subject              // サブジェクト
-                                        , $toCustomerMail       // 本文
-                                        , $CONF["email03"]      // 配送元アドレス
-                                        , $CONF["shop_name"]    // 配送元 名前
-                                        , $CONF["email03"]      // reply_to
-                                        , $CONF["email04"]      // return_path
-                                        , $CONF["email04"]      // Errors_to
-                                        , $CONF["email01"]      // Bcc
-                    );
-                    // 宛先の設定
-                    $name = $_POST["name01"] . $_POST["name02"] ." 様";
-                    $objMail->setTo($_POST["email"], $name);
-                    $objMail->sendMail();
-
-                    // 完了ページに移動させる。
-                    $customer_id = $objQuery->get("customer_id", "dtb_customer", "secret_key = ?", array($this->uniqid));
-                    SC_Response_Ex::sendRedirect('complete.php', array("ci" => $customer_id));
-                    exit;
-                    
-                }
+           
+                // 会員情報の登録
+                $this->CONF = $CONF;
+                $this->uniqid = $this->lfRegistData();
+
+                $this->tpl_mainpage = 'entry/complete.tpl';
+                $this->tpl_title = '会員登録(完了ページ)';
+
+                $this->lfSendMail();
+
+                // 完了ページに移動させる。
+                $customer_id = $objQuery->get("customer_id", "dtb_customer", "secret_key = ?", array($this->uniqid));
+                SC_Response_Ex::sendRedirect('complete.php', array("ci" => $customer_id));
+                exit;
+                
             }
         }
@@ -335,176 +201,169 @@
 
     // 会員情報の登録
-    function lfRegistData ($array, $arrRegistColumn, $arrRejectRegistColumn, $confirm_flg) {
-        
+    function lfRegistData() {
+                
         $objQuery = new SC_Query();
-
-        // 登録データの生成
-        foreach ($arrRegistColumn as $data) {
-            if (strlen($array[ $data["column"] ]) > 0 && ! in_array($data["column"], $arrRejectRegistColumn)) {
-                $arrRegist[ $data["column"] ] = $array[ $data["column"] ];
-            }
-        }
-
-        // 誕生日が入力されている場合
-        if (strlen($array["year"]) > 0 ) {
-            $arrRegist["birth"] = $array["year"] ."/". $array["month"] ."/". $array["day"] ." 00:00:00";
-        }
-
+        $arrRet = $this->objFormParam->getHashArray();
+        $sqlval = $this->objFormParam->getDbArray();
+        
+        // 登録データの作成
+        $sqlval['birth'] = SC_Utils_Ex::sfGetTimestamp($arrRet['year'], $arrRet['month'], $arrRet['day']);
+        
         // パスワードの暗号化
-        $arrRegist["password"] = sha1($arrRegist["password"] . ":" . AUTH_MAGIC);
-
+        $sqlval["password"] = sha1($arrRegist["password"] . ":" . AUTH_MAGIC);
+
+        // 重複しない会員登録キーを発行する。
+        $count = 1;
+        while ($count != 0) {
+            $uniqid = SC_Utils_Ex::sfGetUniqRandomId("r");
+            $count = $objQuery->count("dtb_customer", "secret_key = ?", array($uniqid));
+        }
+        
         // 仮会員登録の場合
-        if($confirm_flg == true) {
-            // 重複しない会員登録キーを発行する。
-            $count = 1;
-            while ($count != 0) {
-                $uniqid = SC_Utils_Ex::sfGetUniqRandomId("t");
-                $count = $objQuery->count("dtb_customer", "secret_key = ?", array($uniqid));
-            }
-            switch($array["mailmaga_flg"]) {
-                case 1:
-                    $arrRegist["mailmaga_flg"] = 4;
-                    break;
-                case 2:
-                    $arrRegist["mailmaga_flg"] = 5;
-                    break;
-                default:
-                    $arrRegist["mailmaga_flg"] = 6;
-                    break;
-            }
-
-            $arrRegist["status"] = "1";				// 仮会員
+        if(CUSTOMER_CONFIRM_MAIL == true) {
+            $sqlval["mailmaga_flg"] = $this->lfChangeMailFlg($sqlval["mailmaga_flg"]);
+            $sqlval["status"] = "1";				// 仮会員
         } else {
-            // 重複しない会員登録キーを発行する。
-            $count = 1;
-            while ($count != 0) {
-                $uniqid = SC_Utils_Ex::sfGetUniqRandomId("r");
-                $count = $objQuery->count("dtb_customer", "secret_key = ?", array($uniqid));
-            }
-            $arrRegist["status"] = "2";				// 本会員
-        }
-
+            $sqlval["status"] = "2";				// 本会員
+        }
+        
         /*
           secret_keyは、テーブルで重複許可されていない場合があるので、
                           本会員登録では利用されないがセットしておく。
         */
-        $arrRegist["secret_key"] = $uniqid;		// 会員登録キー
-        $arrRegist["create_date"] = "now()"; 	// 作成日
-        $arrRegist["update_date"] = "now()"; 	// 更新日
-        $arrRegist["first_buy_date"] = "";	 	// 最初の購入日
-        $arrRegist["point"] = $this->CONF["welcome_point"]; // 入会時ポイント
-
-        if ($this->isMobile) {
+        $sqlval["secret_key"] = $uniqid;		// 会員登録キー
+        $sqlval["create_date"] = "now()"; 	// 作成日
+        $sqlval["update_date"] = "now()"; 	// 更新日
+        $sqlval["first_buy_date"] = "";	 	// 最初の購入日
+        $sqlval["point"] = $this->CONF["welcome_point"]; // 入会時ポイント
+
+        if ($this->isMobile === true) {
             // 携帯メールアドレス
-            $arrRegist['email_mobile'] = $arrRegist['email'];
+            $sqlval['email_mobile'] = $sqlval['email'];
             //PHONE_IDを取り出す
-            $phoneId = SC_MobileUserAgent::getId();
-            $arrRegist['mobile_phone_id'] =  $phoneId;
-        }
-
+            $sqlval['mobile_phone_id'] =  SC_MobileUserAgent::getId();
+        }
+       
         //-- 仮登録実行
         $objQuery->begin();
-
-        $arrRegist['customer_id'] = $objQuery->nextVal('dtb_customer_customer_id');
-        $objQuery->insert("dtb_customer", $arrRegist);
+        $sqlval['customer_id'] = $objQuery->nextVal('dtb_customer_customer_id');
+        $objQuery->insert("dtb_customer", $sqlval);
         
         $objQuery->commit();
-
+        
         return $uniqid;
     }
-
-    //---- 取得文字列の変換
-    function lfConvertParam($array, $arrRegistColumn) {
-        /*
-         *	文字列の変換
-         *	K :  「半角(ﾊﾝｶｸ)片仮名」を「全角片仮名」に変換
-         *	C :  「全角ひら仮名」を「全角かた仮名」に変換
-         *	V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
-         *	n :  「全角」数字を「半角(ﾊﾝｶｸ)」に変換
-         *  a :  全角英数字を半角英数字に変換する
-         */
-        // カラム名とコンバート情報
-        foreach ($arrRegistColumn as $data) {
-            $arrConvList[ $data["column"] ] = $data["convert"];
-        }
-        // 文字変換
-        foreach ($arrConvList as $key => $val) {
-            // POSTされてきた値のみ変換する。
-            if(isset($array[$key]) && strlen($array[$key]) > 0) {
-                $array[$key] = mb_convert_kana($array[$key] ,$val);
-            }
-        }
-        return $array;
-    }
+    
+    function lfSendMail(){
+        // 完了メール送信
+        $arrRet = $this->objFormParam->getHashArray();
+        $this->name01 = $arrRet['name01'];
+        $this->name02 = $arrRet['name02'];
+        $objMailText = new SC_SiteView();
+        $objMailText->assignobj($this);
+
+        $objHelperMail = new SC_Helper_Mail_Ex();
+        $objQuery = new SC_Query();
+        $objCustomer = new SC_Customer();
+
+        // 仮会員が有効の場合
+        if(CUSTOMER_CONFIRM_MAIL == true) {
+            $subject = $objHelperMail->sfMakeSubject('会員登録のご確認');
+            $toCustomerMail = $objMailText->fetch("mail_templates/customer_mail.tpl");
+        } else {
+            $subject = $objHelperMail->sfMakeSubject('会員登録のご完了');
+            $toCustomerMail = $objMailText->fetch("mail_templates/customer_regist_mail.tpl");
+            // ログイン状態にする
+            $objCustomer->setLogin($arrRet["email"]);
+        }
+
+        $objMail = new SC_SendMail();
+        $objMail->setItem(
+                              ''                    // 宛先
+                            , $subject              // サブジェクト
+                            , $toCustomerMail       // 本文
+                            , $CONF["email03"]      // 配送元アドレス
+                            , $CONF["shop_name"]    // 配送元 名前
+                            , $CONF["email03"]      // reply_to
+                            , $CONF["email04"]      // return_path
+                            , $CONF["email04"]      // Errors_to
+                            , $CONF["email01"]      // Bcc
+        );
+        // 宛先の設定
+        $name = $arrRet["name01"] . $arrRet["name02"] ." 様";
+        $objMail->setTo($arrRet["email"], $name);
+        $objMail->sendMail();
+    }
+
 
     //---- 入力エラーチェック
     function lfErrorCheck($array) {
 
-        $objErr = new SC_CheckError($array);
-
-        $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" , "MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("お名前(フリガナ・姓)", 'kana01', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
-        $objErr->doFunc(array("お名前(フリガナ・名)", 'kana02', STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
-        $objErr->doFunc(array("パスワード", 'password', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK", "NUM_RANGE_CHECK"));
-        $objErr->doFunc(array("パスワード確認用の質問", "reminder") ,array("SELECT_CHECK", "NUM_CHECK"));
-        $objErr->doFunc(array("パスワード確認用の質問の答え", "reminder_answer", STEXT_LEN) ,array("EXIST_CHECK","SPTAB_CHECK" , "MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
-        $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
+        // 入力データを渡す。
+        $arrRet = $this->objFormParam->getHashArray();
+        $objErr = new SC_CheckError($arrRet);
+        $objErr->arrErr = $this->objFormParam->checkError();
+
+        $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03"),array("TEL_CHECK"));
         $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
-        $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
-        $objErr->doFunc(array("住所1", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("住所2", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
-        $objErr->doFunc(array("お電話番号1", 'tel01'), array("EXIST_CHECK","SPTAB_CHECK" ));
-        $objErr->doFunc(array("お電話番号2", 'tel02'), array("EXIST_CHECK","SPTAB_CHECK" ));
-        $objErr->doFunc(array("お電話番号3", 'tel03'), array("EXIST_CHECK","SPTAB_CHECK" ));
-        $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03") ,array("TEL_CHECK"));
-        $objErr->doFunc(array("性別", "sex") ,array("SELECT_CHECK", "NUM_CHECK"));
         $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_BIRTHDAY"));
-        
         if ($this->isMobile === false){
-            $objErr->doFunc(array('メールアドレス', "email", MTEXT_LEN) ,array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
-            $objErr->doFunc(array("FAX番号1", 'fax01'), array("SPTAB_CHECK"));
-            $objErr->doFunc(array("FAX番号2", 'fax02'), array("SPTAB_CHECK"));
-            $objErr->doFunc(array("FAX番号3", 'fax03'), array("SPTAB_CHECK"));
+            $objErr->doFunc(array('パスワード', 'パスワード(確認)', "password", "password02") ,array("EQUAL_CHECK"));
+            $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK"));
             $objErr->doFunc(array("FAX番号", "fax01", "fax02", "fax03") ,array("TEL_CHECK"));
-            $objErr->doFunc(array("メールマガジン", "mailmaga_flg") ,array("SELECT_CHECK", "NUM_CHECK"));
-            $objErr->doFunc(array("メールマガジン", 'mailmaga_flg'), array("SELECT_CHECK"));
-            $objErr->doFunc(array("パスワード(確認)", 'password02', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "SPTAB_CHECK" ,"ALNUM_CHECK", "NUM_RANGE_CHECK"));
-            $objErr->doFunc(array('パスワード', 'パスワード(確認)', "password", "password02") ,array("EQUAL_CHECK"));
-            $objErr->doFunc(array('メールアドレス(確認)', "email02", MTEXT_LEN) ,array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK","SPTAB_CHECK" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
-            $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK"));
-        }
-
+        }
+        
         // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可
-        if (strlen($array["email"]) > 0) {
-            $array["email"] = strtolower($array["email"]);
-            $objQuery = new SC_Query();
-            $arrRet = $objQuery->select("email, update_date, del_flg", "dtb_customer","email = ? OR email_mobile = ? ORDER BY del_flg", array($array["email"], $array["email"]));
-
-            if(count($arrRet) > 0) {
-                if($arrRet[0]['del_flg'] != '1') {
-                    // 会員である場合
+        $register_user_flg = $this->lfCheckRegisterUserForEmail($arrRet["email"]);
+        switch($register_user_flg) {
+            case 1:
+                $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />";
+                break;
+            case 2:
+                $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
+                break;
+            default:
+                break;
+        }
+        return $objErr->arrErr;
+    }
+
+    /**
+     *   emailアドレスから、登録済み会員や退会済み会員をチェックする
+     *   
+     *   @return integer  0:登録可能     1:登録済み   2:再登録制限期間内削除ユーザー
+     */
+    function lfCheckRegisterUserForEmail($email){
+        $return = 0;
+        
+        $objQuery = new SC_Query();
+        $arrRet = $objQuery->select("email, update_date, del_flg"
+                                    ,"dtb_customer"
+                                    ,"email = ? OR email_mobile = ? ORDER BY del_flg"
+                                    ,array($email, $email)
+                                    );
+
+        if(count($arrRet) > 0) {
+            if($arrRet[0]['del_flg'] != '1') {
+                // 会員である場合
+                if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = "";
+                $return = 1;
+            } else {
+                // 退会した会員である場合
+                $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
+                $now_time = time();
+                $pass_time = $now_time - $leave_time;
+                // 退会から何時間-経過しているか判定する。
+                $limit_time = ENTRY_LIMIT_HOUR * 3600;
+                if($pass_time < $limit_time) {
                     if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = "";
-                    $objErr->arrErr["email"] .= "※ すでに会員登録で使用されているメールアドレスです。<br />";
-                } else {
-                    // 退会した会員である場合
-                    $leave_time = SC_Utils_Ex::sfDBDatetoTime($arrRet[0]['update_date']);
-                    $now_time = time();
-                    $pass_time = $now_time - $leave_time;
-                    // 退会から何時間-経過しているか判定する。
-                    $limit_time = ENTRY_LIMIT_HOUR * 3600;
-                    if($pass_time < $limit_time) {
-                        if (!isset($objErr->arrErr['email'])) $objErr->arrErr['email'] = "";
-                        $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
-                    }
+                    $return = 2;
                 }
             }
         }
-        return $objErr->arrErr;
-    }
-
+        return $return;
+    }
+    
     //確認ページ用パスワード表示用
-
     function lfPassLen($passlen){
         $ret = "";
@@ -527,5 +386,19 @@
         }
     }
-
+    
+    function lfChangeMailFlg($mailmaga_flg){
+        switch($mailmaga_flg) {
+            case 1:
+                $mailmaga_flg = 4;
+                break;
+            case 2:
+                $mailmaga_flg = 5;
+                break;
+            default:
+                $mailmaga_flg = 6;
+                break;
+        }
+        return $mailmaga_flg;
+    }
 }
 ?>
Index: /branches/version-2_5-dev/data/Smarty/templates/mobile/entry/index.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/mobile/entry/index.tpl	(revision 19835)
+++ /branches/version-2_5-dev/data/Smarty/templates/mobile/entry/index.tpl	(revision 19853)
@@ -32,9 +32,5 @@
 	【メールアドレス】<font color="#FF0000">※</font><br>
 	<font color="#FF0000"><!--{$arrErr.email}--></font>
-<!--{if @$tpl_kara_mail_from}-->
-  <!--{$tpl_kara_mail_from|h}-->
-<!--{else}-->
-	<input type="text" name="email" value="<!--{$email|h}-->" istyle="3">
-<!--{/if}-->
+	<input type="text" name="email" value="<!--{$arrForm.email|h}-->" istyle="3">
   <br>
 
@@ -49,38 +45,38 @@
 	<select name="reminder">
 		<option value="">選択してください</option>
-		<!--{html_options options=$arrReminder selected=$reminder}-->
+		<!--{html_options options=$arrReminder selected=$arrForm.reminder}-->
 	</select><br>
 
 	【質問の答え】<font color="#FF0000">※</font><br>
 	<font color="#FF0000"><!--{$arrErr.reminder_answer}--></font>
-	<input type="text" name="reminder_answer" value="<!--{$reminder_answer|h}-->" istyle="1"><br>
+	<input type="text" name="reminder_answer" value="<!--{$arrForm.reminder_answer|h}-->" istyle="1"><br>
 
 	【お名前】<font color="#FF0000">※</font><br>
 	<font color="#FF0000"><!--{$arrErr.name01}--><!--{$arrErr.name02}--></font>
 	姓（例：渋谷）<br>
-	<input type="text" name="name01" value="<!--{$name01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+	<input type="text" name="name01" value="<!--{$arrForm.name01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
 
 	名（例：花子）<br>
-	<input type="text" name="name02" value="<!--{$name02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
+	<input type="text" name="name02" value="<!--{$arrForm.name02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="1"><br>
 	<font color="#FF0000"><!--{$arrErr.kana01}--><!--{$arrErr.kana02}--></font>
 
 	カナ/姓（例：シブヤ）<font color="#FF0000">※</font><br>
-	<input type="text" name="kana01" value="<!--{$kana01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+	<input type="text" name="kana01" value="<!--{$arrForm.kana01|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
 
 	カナ/名（例：ハナコ）<font color="#FF0000">※</font><br>
-	<input type="text" name="kana02" value="<!--{$kana02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
+	<input type="text" name="kana02" value="<!--{$arrForm.kana02|h}-->" maxlength="<!--{$smarty.const.STEXT_LEN}-->" istyle="2"><br>
 
 	【性別】<font color="#FF0000">*</font><br>
 	<font color="#FF0000"><!--{$arrErr.sex}--></font>
-	<input type="radio" name="sex" value="1" <!--{if $sex eq 1}-->checked<!--{/if}--> />男性&nbsp;<input type="radio" name="sex" value="2" <!--{if $sex eq 2}-->checked<!--{/if}--> />女性<br>
+	<input type="radio" name="sex" value="1" <!--{if $arrForm.sex eq 1}-->checked<!--{/if}--> />男性&nbsp;<input type="radio" name="sex" value="2" <!--{if $arrForm.sex eq 2}-->checked<!--{/if}--> />女性<br>
 
 	【生年月日】<br>
 	<font color="#FF0000"><!--{$arrErr.year}--><!--{$arrErr.month}--><!--{$arrErr.day}--></font>
-	<input type="text" name="year" value="<!--{$year|h}-->" size="4" maxlength="4" istyle="4">年<br>
+	<input type="text" name="year" value="<!--{$arrForm.year|h}-->" size="4" maxlength="4" istyle="4">年<br>
 	<select name="month">
-		<!--{html_options options=$arrMonth selected=$month}-->
+		<!--{html_options options=$arrMonth selected=$arrForm.month}-->
 	</select>月<br>
 	<select name="day">
-		<!--{html_options options=$arrDay selected=$day}-->
+		<!--{html_options options=$arrDay selected=$arrForm.day}-->
 	</select>日<br>
 
@@ -91,7 +87,7 @@
 	<!--{assign var="size1" value="`$smarty.const.ZIP01_LEN+2`"}-->
 	<!--{assign var="size2" value="`$smarty.const.ZIP02_LEN+2`"}-->
-	<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $zip01 == ""}--><!--{$arrOtherDeliv.zip01|h}--><!--{else}--><!--{$zip01|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
+	<input size="<!--{$size1}-->" type="text" name="zip01" value="<!--{if $arrForm.zip01 == ""}--><!--{$arrOtherDeliv.zip01|h}--><!--{else}--><!--{$arrForm.zip01|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP01_LEN}-->" istyle="4">
 	&nbsp;-&nbsp;
-	<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $zip02 == ""}--><!--{$arrOtherDeliv.zip02|h}--><!--{else}--><!--{$zip02|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
+	<input size="<!--{$size2}-->" type="text" name="zip02" value="<!--{if $arrForm.zip02 == ""}--><!--{$arrOtherDeliv.zip02|h}--><!--{else}--><!--{$arrForm.zip02|h}--><!--{/if}-->" maxlength="<!--{$smarty.const.ZIP02_LEN}-->" istyle="4"><br>
 
 	【都道府県】<font color="#FF0000">*</font><br>
@@ -99,27 +95,27 @@
 	<select name="pref">
 		<option value="">都道府県を選択</option>
-		<!--{html_options options=$arrPref selected=$pref}-->
+		<!--{html_options options=$arrPref selected=$arrForm.pref}-->
 	</select><br>
 
 	【住所1】<font color="#FF0000">*</font><br>
 	<font color="#FF0000"><!--{$arrErr.addr01}--></font>
-	<input type="text" name="addr01" value="<!--{$addr01|h}-->" istyle="1"><br>
+	<input type="text" name="addr01" value="<!--{$arrForm.addr01|h}-->" istyle="1"><br>
 
 	【住所2】<font color="#FF0000">*</font><br>
 	<font color="#FF0000"><!--{$arrErr.addr02}--></font>
-	<input type="text" name="addr02" value="<!--{$addr02|h}-->" istyle="1"><br>
+	<input type="text" name="addr02" value="<!--{$arrForm.addr02|h}-->" istyle="1"><br>
 
 	【電話番号】<font color="#FF0000">*</font><br>
 	<font color="#FF0000"><!--{$arrErr.tel01}--><!--{$arrErr.tel02}--><!--{$arrErr.tel03}--></font>
 	<!--{assign var="size" value="`$smarty.const.TEL_ITEM_LEN+2`"}-->
-	<input type="text" size="<!--{$size}-->" name="tel01" value="<!--{$tel01|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	<input type="text" size="<!--{$size}-->" name="tel01" value="<!--{$arrForm.tel01|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
 	&nbsp;-&nbsp;
-	<input type="text" size="<!--{$size}-->" name="tel02" value="<!--{$tel02|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
+	<input type="text" size="<!--{$size}-->" name="tel02" value="<!--{$arrForm.tel02|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4">
 	&nbsp;-&nbsp;
-	<input type="text" size="<!--{$size}-->" name="tel03" value="<!--{$tel03|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4"><br>
+	<input type="text" size="<!--{$size}-->" name="tel03" value="<!--{$arrForm.tel03|h}-->" maxlength="<!--{$smarty.const.TEL_ITEM_LEN}-->" istyle="4"><br>
 
 	【メールマガジン】<br>
 	お得な情報を希望されますか？<br>
-	配信希望<input type="checkbox" name="mailmaga_flg" value="on" <!--{if $mailmaga_flg eq 'on' || $mailmaga_flg == 2}-->checked<!--{/if}--> /><br>
+	配信希望<input type="checkbox" name="mailmaga_flg" value="on" <!--{if $arrForm.mailmaga_flg eq 'on' || $arrForm.mailmaga_flg == 2}-->checked<!--{/if}--> /><br>
 	（希望されない場合はチェックをはずしてください）<br>
 	<br>
Index: /branches/version-2_5-dev/data/Smarty/templates/mobile/index.tpl
===================================================================
--- /branches/version-2_5-dev/data/Smarty/templates/mobile/index.tpl	(revision 19805)
+++ /branches/version-2_5-dev/data/Smarty/templates/mobile/index.tpl	(revision 19853)
@@ -49,5 +49,5 @@
 <a href="mypage/refusal.php" accesskey="3"><!--{3|numeric_emoji}-->会員退会</a><br>
 <!--{else}-->
-<a href="entry/new.php" accesskey="3"><!--{3|numeric_emoji}-->会員登録</a><br>
+<a href="entry/kiyaku.php" accesskey="3"><!--{3|numeric_emoji}-->会員登録</a><br>
 <!--{/if}-->
 <a href="guide/<!--{$smarty.const.DIR_INDEX_URL}-->" accesskey="4"><!--{4|numeric_emoji}-->ご利用ガイド</a><br>
