source: branches/feature-module-update/html/mypage/change.php @ 15079

Revision 15079, 14.4 KB checked in by nanasess, 17 years ago (diff)

svn:mime-type application/x-httpd-php; charset=UTF-8 設定

  • Property svn:mime-type set to application/x-httpd-php; charset=UTF-8
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7//データベースから商品検索を実行する。(ECキット動作試験用の開発)
8require_once("../require.php");
9
10class LC_Page{
11    function LC_Page() {
12        $this->tpl_mainpage = USER_PATH . 'templates/mypage/change.tpl';
13        $this->tpl_title = 'MYページ/会員登録内容変更(入力ページ)';
14        $this->tpl_navi = USER_PATH . 'templates/mypage/navi.tpl';
15        $this->tpl_mainno = 'mypage';
16        $this->tpl_mypageno = 'change';
17        global $arrReminder;
18        global $arrPref;
19        global $arrJob;
20        global $arrMAILMAGATYPE;
21        global $arrSex;
22        $this->arrReminder = $arrReminder;
23        $this->arrPref = $arrPref;
24        $this->arrJob = $arrJob;
25        $this->arrMAILMAGATYPE = $arrMAILMAGATYPE;
26        $this->arrSex = $arrSex;
27        session_cache_limiter('private-no-expire');
28    }
29}
30
31$objPage = new LC_Page();               
32$objView = new SC_SiteView();           
33$objQuery = new SC_Query();             
34$objCustomer = new SC_Customer();
35$objFormParam = new SC_FormParam();
36
37// レイアウトデザインを取得
38$objPage = sfGetPageLayout($objPage, false, "mypage/index.php");
39
40//日付プルダウン設定
41$objDate = new SC_Date(1901);
42$objPage->arrYear = $objDate->getYear();   
43$objPage->arrMonth = $objDate->getMonth();
44$objPage->arrDay = $objDate->getDay();
45
46// ログインチェック
47if (!$objCustomer->isLoginSuccess()){
48    sfDispSiteError(CUSTOMER_ERROR);
49}else {
50    //マイページトップ顧客情報表示用
51    $objPage->CustomerName1 = $objCustomer->getvalue('name01');
52    $objPage->CustomerName2 = $objCustomer->getvalue('name02');
53    $objPage->CustomerPoint = $objCustomer->getvalue('point');
54}
55
56//---- 登録用カラム配列
57$arrRegistColumn = array(
58                             array(  "column" => "name01",      "convert" => "aKV" ),
59                             array(  "column" => "name02",      "convert" => "aKV" ),
60                             array(  "column" => "kana01",      "convert" => "CKV" ),
61                             array(  "column" => "kana02",      "convert" => "CKV" ),
62                             array(  "column" => "zip01",       "convert" => "n" ),
63                             array(  "column" => "zip02",       "convert" => "n" ),
64                             array(  "column" => "pref",        "convert" => "n" ),
65                             array(  "column" => "addr01",      "convert" => "aKV" ),
66                             array(  "column" => "addr02",      "convert" => "aKV" ),
67                             array(  "column" => "email",       "convert" => "a" ),
68                             array(  "column" => "tel01",       "convert" => "n" ),
69                             array(  "column" => "tel02",       "convert" => "n" ),
70                             array(  "column" => "tel03",       "convert" => "n" ),
71                             array(  "column" => "fax01",       "convert" => "n" ),
72                             array(  "column" => "fax02",       "convert" => "n" ),
73                             array(  "column" => "fax03",       "convert" => "n" ),
74                             array(  "column" => "sex",         "convert" => "n" ),
75                             array(  "column" => "job",         "convert" => "n" ),
76                             array(  "column" => "birth",       "convert" => "n" ),
77                             array(  "column" => "password",    "convert" => "an" ),
78                             array(  "column" => "reminder",    "convert" => "n" ),
79                             array(  "column" => "reminder_answer", "convert" => "aKV" ),
80                             array(  "column" => "mailmaga_flg", "convert" => "n" )                         
81                        );
82
83
84switch ($_POST['mode']){
85   
86case 'confirm':
87    //-- 入力データの変換
88    $objPage->arrForm = $_POST;
89    $objPage->arrForm = lfConvertParam($objPage->arrForm, $arrRegistColumn);
90    $objPage->arrForm['email'] = strtolower($objPage->arrForm['email']);        // emailはすべて小文字で処理
91
92    /* 誕生日の変更は可能にする
93    //誕生日不正変更のチェック
94    $arrCustomer = lfGetCustomerData();
95    if ($arrCustomer['birth'] != "" && ($objPage->arrForm['year'] != $arrCustomer['year'] || $objPage->arrForm['month'] != $arrCustomer['month'] || $objPage->arrForm['day'] != $arrCustomer['day'])){
96        sfDispSiteError(CUSTOMER_ERROR);
97    }else{
98    */
99        //エラーチェック
100        $objPage->arrErr = lfErrorCheck($objPage->arrForm);
101        $email_flag = true;
102        //メールアドレスを変更している場合、メールアドレスの重複チェック
103        if ($objPage->arrForm['email'] != $objCustomer->getValue('email')){
104            $email_cnt = $objQuery->count("dtb_customer","del_flg=0 AND email=?", array($objPage->arrForm['email']));
105            if ($email_cnt > 0){
106                $email_flag = false;
107            }
108        }
109        //エラーなしでかつメールアドレスが重複していない場合
110        if ($objPage->arrErr == "" && $email_flag == true){
111            //確認ページへ
112            $objPage->tpl_mainpage = USER_PATH . 'templates/mypage/change_confirm.tpl';
113            $objPage->tpl_title = 'MYページ/会員登録内容変更(確認ページ)';
114            $passlen = strlen($objPage->arrForm['password']);
115            $objPage->passlen = lfPassLen($passlen);
116        } else {
117            lfFormReturn($objPage->arrForm,$objPage);
118            if ($email_flag == false){
119                $objPage->arrErr['email'].="既に使用されているメールアドレスです。";
120            }
121        }
122    //}
123    break;
124   
125case 'return':
126    $objPage->arrForm = $_POST;
127    lfFormReturn($objPage->arrForm,$objPage);
128    break;
129   
130case 'complete':
131
132    //-- 入力データの変換
133    $arrForm = lfConvertParam($_POST, $arrRegistColumn);
134    $arrForm['email'] = strtolower($arrForm['email']);      // emailはすべて小文字で処理
135   
136    /* 誕生日の変更は可能にする
137    //誕生日不正変更のチェック
138    $arrCustomer = lfGetCustomerData();
139    if ($arrCustomer['birth'] != "" && ($arrForm['year'] !=  $arrCustomer['year'] || $arrForm['month'] != $arrCustomer['month'] || $arrForm['day'] != $arrCustomer['day'])){
140        sfDispSiteError(CUSTOMER_ERROR);
141    } else {*/
142   
143        //エラーチェック
144        $objPage->arrErr = lfErrorCheck($arrForm);
145        $email_flag = true;
146        if($arrForm['email'] != $objCustomer->getValue('email')) {
147            //メールアドレスの重複チェック
148            $email_cnt = $objQuery->count("dtb_customer","del_flg=0 AND email=?", array($arrForm['email']));
149            if ($email_cnt > 0){
150                $email_flag = false;
151            }
152        }
153        //エラーなしでかつメールアドレスが重複していない場合
154        if($objPage->arrErr == "" && $email_flag) {
155            $arrForm['customer_id'] = $objCustomer->getValue('customer_id');
156            //-- 編集登録
157            sfEditCustomerData($arrForm, $arrRegistColumn);
158            //セッション情報を最新の状態に更新する
159            $objCustomer->updateSession();
160            //完了ページへ
161            header("Location: ./change_complete.php");
162            exit;
163        } else {
164            sfDispSiteError(CUSTOMER_ERROR);
165        }
166    //}
167    break;
168   
169default:
170    //顧客情報取得
171    $objPage->arrForm = lfGetCustomerData();
172    $objPage->arrForm['password'] = DEFAULT_PASSWORD;
173    $objPage->arrForm['password02'] = DEFAULT_PASSWORD;
174    break;
175}
176
177//誕生日データ登録の有無
178$arrCustomer = lfGetCustomerData();
179if ($arrCustomer['birth'] != ""){   
180    $objPage->birth_check = true;
181}
182
183$objView->assignobj($objPage);              //$objpage内の全てのテンプレート変数をsmartyに格納
184$objView->display(SITE_FRAME);              //パスとテンプレート変数の呼び出し、実行
185
186//-------------------------------------------------------------------------------------------------------------------------
187
188/* パラメータ情報の初期化 */
189function lfInitParam() {
190    global $objFormParam;
191    $objFormParam->addParam("お名前(姓)", "name01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
192    $objFormParam->addParam("お名前(名)", "name02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
193    $objFormParam->addParam("フリガナ(セイ)", "kana01", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
194    $objFormParam->addParam("フリガナ(メイ)", "kana02", STEXT_LEN, "KVCa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
195    $objFormParam->addParam("郵便番号1", "zip01", ZIP01_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
196    $objFormParam->addParam("郵便番号2", "zip02", ZIP02_LEN, "n", array("EXIST_CHECK", "NUM_CHECK", "NUM_COUNT_CHECK"));
197    $objFormParam->addParam("都道府県", "pref", INT_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "NUM_CHECK"));
198    $objFormParam->addParam("ご住所1", "addr01", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
199    $objFormParam->addParam("ご住所2", "addr02", STEXT_LEN, "KVa", array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
200    $objFormParam->addParam("お電話番号1", "tel01", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
201    $objFormParam->addParam("お電話番号2", "tel02", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
202    $objFormParam->addParam("お電話番号3", "tel03", TEL_ITEM_LEN, "n", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,"NUM_CHECK"));
203}
204                                           
205//エラーチェック
206
207function lfErrorCheck($array) {
208    $objErr = new SC_CheckError($array);
209   
210    $objErr->doFunc(array("お名前(姓)", 'name01', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
211    $objErr->doFunc(array("お名前(名)", 'name02', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
212    $objErr->doFunc(array("フリガナ(セイ)", 'kana01', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
213    $objErr->doFunc(array("フリガナ(メイ)", 'kana02', STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
214    $objErr->doFunc(array("郵便番号1", "zip01", ZIP01_LEN ) ,array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
215    $objErr->doFunc(array("郵便番号2", "zip02", ZIP02_LEN ) ,array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
216    $objErr->doFunc(array("郵便番号", "zip01", "zip02"), array("ALL_EXIST_CHECK"));
217    $objErr->doFunc(array("都道府県", 'pref'), array("SELECT_CHECK","NUM_CHECK"));
218    $objErr->doFunc(array("ご住所1", "addr01", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
219    $objErr->doFunc(array("ご住所2", "addr02", MTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
220    $objErr->doFunc(array('メールアドレス', "email", MTEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
221    $objErr->doFunc(array('メールアドレス(確認)', "email02", MTEXT_LEN) ,array("EXIST_CHECK", "EMAIL_CHECK","NO_SPTAB" , "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
222    $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', "email", "email02") ,array("EQUAL_CHECK"));
223    $objErr->doFunc(array("お電話番号1", 'tel01'), array("EXIST_CHECK","SPTAB_CHECK"));
224    $objErr->doFunc(array("お電話番号2", 'tel02'), array("EXIST_CHECK","SPTAB_CHECK"));
225    $objErr->doFunc(array("お電話番号3", 'tel03'), array("EXIST_CHECK","SPTAB_CHECK"));
226    $objErr->doFunc(array("お電話番号", "tel01", "tel02", "tel03", TEL_LEN) ,array("TEL_CHECK"));
227    $objErr->doFunc(array("FAX番号", "fax01", "fax02", "fax03", TEL_LEN) ,array("TEL_CHECK"));
228    $objErr->doFunc(array("ご性別", "sex") ,array("SELECT_CHECK", "NUM_CHECK"));
229    $objErr->doFunc(array("ご職業", "job") ,array("NUM_CHECK"));
230    $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_DATE"));
231    $objErr->doFunc(array("パスワード", 'password', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "ALNUM_CHECK", "NUM_RANGE_CHECK"));
232    $objErr->doFunc(array("パスワード(確認)", 'password02', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "ALNUM_CHECK", "NUM_RANGE_CHECK"));
233    $objErr->doFunc(array("パスワード", 'パスワード(確認)', 'password', 'password02'), array("EQUAL_CHECK"));
234    $objErr->doFunc(array("パスワードを忘れたときの質問", "reminder") ,array("SELECT_CHECK", "NUM_CHECK"));
235    $objErr->doFunc(array("パスワードを忘れたときの答え", "reminder_answer", STEXT_LEN) ,array("EXIST_CHECK", "MAX_LENGTH_CHECK"));
236    $objErr->doFunc(array("メールマガジン", "mailmaga_flg") ,array("SELECT_CHECK", "NUM_CHECK"));
237    return $objErr->arrErr;
238   
239}
240
241//---- 取得文字列の変換
242function lfConvertParam($array, $arrRegistColumn) {
243    /*
244     *  文字列の変換
245     *  K :  「半角(ハンカク)片仮名」を「全角片仮名」に変換
246     *  C :  「全角ひら仮名」を「全角かた仮名」に変換
247     *  V :  濁点付きの文字を一文字に変換。"K","H"と共に使用します
248     *  n :  「全角」数字を「半角(ハンカク)」に変換
249     *  a :  全角英数字を半角英数字に変換する
250     */
251    // カラム名とコンバート情報
252    foreach ($arrRegistColumn as $data) {
253        $arrConvList[ $data["column"] ] = $data["convert"];
254    }
255   
256    // 文字変換
257    foreach ($arrConvList as $key => $val) {
258        // POSTされてきた値のみ変換する。
259        if(strlen(($array[$key])) > 0) {
260            $array[$key] = mb_convert_kana($array[$key] ,$val);
261        }
262    }
263    return $array;
264}
265
266//顧客情報の取得
267function lfGetCustomerData(){
268    global $objQuery;
269    global $objCustomer;
270    //顧客情報取得
271    $ret = $objQuery->select("*","dtb_customer","customer_id=?", array($objCustomer->getValue('customer_id')));
272    $arrForm = $ret[0];
273
274    //誕生日の年月日取得
275    if (isset($arrForm['birth'])){
276        $birth = split(" ", $arrForm["birth"]);
277        list($year, $month, $day) = split("-",$birth[0]);
278       
279        $arrForm['year'] = $year;
280        $arrForm['month'] = $month;
281        $arrForm['day'] = $day;
282       
283    }
284    return $arrForm;
285}
286   
287// 編集登録
288function lfRegistData($array, $arrRegistColumn) {
289    global $objQuery;
290    global $objCustomer;
291   
292    foreach ($arrRegistColumn as $data) {
293        if ($data["column"] != "password") {
294            if($array[ $data['column'] ] == "") {
295                $arrRegist[ $data['column'] ] = NULL;
296            } else {
297                $arrRegist[ $data["column"] ] = $array[ $data["column"] ];
298            }
299        }
300    }
301    if (strlen($array["year"]) > 0 && strlen($array["month"]) > 0 && strlen($array["day"]) > 0) {
302        $arrRegist["birth"] = $array["year"] ."/". $array["month"] ."/". $array["day"] ." 00:00:00";
303    } else {
304        $arrRegist["birth"] = NULL;
305    }
306
307    //-- パスワードの更新がある場合は暗号化。(更新がない場合はUPDATE文を構成しない)
308    if ($array["password"] != DEFAULT_PASSWORD) $arrRegist["password"] = sha1($array["password"] . ":" . AUTH_MAGIC);
309    $arrRegist["update_date"] = "NOW()";
310   
311    //-- 編集登録実行
312    $objQuery->begin();
313    $objQuery->update("dtb_customer", $arrRegist, "customer_id = ? ", array($objCustomer->getValue('customer_id')));
314    $objQuery->commit();
315}
316
317//確認ページ用パスワード表示用
318
319function lfPassLen($passlen){
320    $ret = "";
321    for ($i=0;$i<$passlen;true){
322    $ret.="*";
323    $i++;
324    }
325    return $ret;
326}
327
328//エラー、戻る時にフォームに入力情報を返す
329function lfFormReturn($array,$objPage){
330    foreach($array as $key => $val){
331        switch ($key){
332            case 'password':
333            case 'password02':
334            $objPage->$key = $val;
335            break;
336            default:
337            $array[ $key ] = $val;
338            break;
339        }
340    }
341}
342
343?>
Note: See TracBrowser for help on using the repository browser.