Changeset 20910


Ignore:
Timestamp:
2011/05/05 00:58:16 (15 years ago)
Author:
Seasoft
Message:

#1287 (会員ログイン状態で新たな会員を登録しようとすると登録できないケースがある)

Location:
branches/version-2_11-dev/data/class
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_11-dev/data/class/SC_CheckError.php

    r20848 r20910  
    11241124        switch($register_user_flg) { 
    11251125            case 1: 
     1126            case 3: 
    11261127                $this->arrErr[$value[1]] .= "※ すでに会員登録で使用されている" . $value[0] . "です。<br />"; 
    11271128                break; 
  • branches/version-2_11-dev/data/class/helper/SC_Helper_Customer.php

    r20885 r20910  
    148148     * @return integer  0:登録可能     1:登録済み   2:再登録制限期間内削除ユーザー  3:自分のアドレス 
    149149     */ 
    150     function sfCheckRegisterUserFromEmail($email){ 
    151         $return = 0; 
    152  
    153         $objCustomer    = new SC_Customer_Ex(); 
    154         $objQuery       =& SC_Query_Ex::getSingletonInstance(); 
    155  
    156         $arrRet         = $objQuery->select("email, update_date, del_flg", 
    157                                             "dtb_customer", 
    158                                             "email = ? OR email_mobile = ? ORDER BY del_flg", 
    159                                             array($email, $email)); 
    160  
    161         if(count($arrRet) > 0) { 
    162             if($arrRet[0]['del_flg'] != '1') { 
    163                 // 会員である場合 
    164                 $return = 1; 
     150    function sfCheckRegisterUserFromEmail($email) { 
     151        $objCustomer = new SC_Customer_Ex(); 
     152        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     153 
     154        // ログインしている場合、すでに登録している自分のemailの場合 
     155        if ($objCustomer->isLoginSuccess(true) 
     156            && SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id'), $email)) { 
     157            // 自分のアドレス 
     158            return 3; 
     159        } 
     160 
     161        $arrRet = $objQuery->select("email, update_date, del_flg", 
     162            "dtb_customer", 
     163            "email = ? OR email_mobile = ? ORDER BY del_flg", 
     164            array($email, $email)); 
     165 
     166        if (count($arrRet) > 0) { 
     167            // 会員である場合 
     168            if ($arrRet[0]['del_flg'] != '1') { 
     169                // 登録済み 
     170                return 1; 
    165171            } else { 
    166172                // 退会した会員である場合 
     
    171177                $limit_time = ENTRY_LIMIT_HOUR * 3600; 
    172178                if($pass_time < $limit_time) { 
    173                     $return = 2; 
     179                    // 再登録制限期間内削除ユーザー 
     180                    return 2; 
    174181                } 
    175182            } 
    176183        } 
    177184 
    178         // ログインしている場合、すでに登録している自分のemailの場合はエラーを返さない 
    179         if ($objCustomer->getValue('customer_id')){ 
    180             if (SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id'), $email)) { 
    181                 $return = 3; 
    182             } 
    183         } 
    184         return $return; 
     185        // 登録可能 
     186        return 0; 
    185187    } 
    186188 
     
    195197     */ 
    196198    function sfCustomerEmailDuplicationCheck($customer_id, $email) { 
    197         $objQuery   =& SC_Query_Ex::getSingletonInstance(); 
    198         $arrResults = $objQuery->getRow("email, email_mobile", 
    199                                         "dtb_customer", "customer_id = ?", 
     199        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     200 
     201        $arrResults = $objQuery->getRow('email, email_mobile', 
     202                                        'dtb_customer', 'customer_id = ?', 
    200203                                        array($customer_id)); 
    201         if ($email == $arrResults['email'] 
    202             || $email == $arrResults["email_mobile"]) { 
    203             return true; 
    204         } 
    205         return false; 
     204        $return = 
     205               strlen($arrResults['email']) >= 1 && $email === $arrResults['email'] 
     206            || strlen($arrResults['email_mobile']) >= 1 &&  $email === $arrResults['email_mobile'] 
     207        ; 
     208        return $return; 
    206209    } 
    207210 
     
    311314        SC_Helper_Customer_Ex::sfCustomerCommonParam($objFormParam); 
    312315        SC_Helper_Customer_Ex::sfCustomerRegisterParam($objFormParam, $isAdmin); 
    313         if($isAdmin) { 
     316        if ($isAdmin) { 
    314317            $objFormParam->addParam("顧客ID", "customer_id", INT_LEN, 'n', array("NUM_CHECK")); 
    315318            $objFormParam->addParam('携帯メールアドレス', "email_mobile", null, 'a', array("NO_SPTAB", "EMAIL_CHECK", "SPTAB_CHECK" ,"EMAIL_CHAR_CHECK", "MOBILE_EMAIL_CHECK")); 
     
    317320            $objFormParam->addParam("SHOP用メモ", 'note', LTEXT_LEN, 'KVa', array("MAX_LENGTH_CHECK")); 
    318321            $objFormParam->addParam("所持ポイント", 'point', INT_LEN, 'n', array("NUM_CHECK")); 
    319  
    320322        } 
    321323 
     
    429431        $objErr = SC_Helper_Customer_Ex::sfCustomerRegisterErrorCheck($objErr); 
    430432 
    431         /* 
    432          * sfCustomerRegisterErrorCheck() では, ログイン中の場合は重複チェック 
    433          * されないので, 再度チェックを行う 
    434          */ 
    435         $objCustomer = new SC_Customer_Ex(); 
    436         if ($objCustomer->isLoginSuccess(true) 
    437             && SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id'), $objFormParam->getValue('email'))) { 
    438             $objErr->arrErr['email'] .= "※ すでに会員登録で使用されているメールアドレスです。<br />"; 
    439         } 
    440         if ($objCustomer->isLoginSuccess(true) 
    441             && SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id'), $objFormParam->getValue('email_mobile'))) { 
    442             $objErr->arrErr['email_mobile'] .= "※ すでに会員登録で使用されているメールアドレスです。<br />"; 
    443         } 
    444  
    445433        return $objErr->arrErr; 
    446434    } 
     
    507495        $objErr->doFunc(array("生年月日", 'year', 'month', 'day'), array("CHECK_BIRTHDAY")); 
    508496 
    509         if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE){ 
    510             if(!$isAdmin) { 
     497        if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE) { 
     498            if (!$isAdmin) { 
    511499                $objErr->doFunc(array('パスワード', 'パスワード(確認)', 'password', "password02") ,array("EQUAL_CHECK")); 
    512500                $objErr->doFunc(array('メールアドレス', 'メールアドレス(確認)', 'email', "email02") ,array("EQUAL_CHECK")); 
     
    515503        } 
    516504 
    517         if(!$isAdmin) { 
     505        if (!$isAdmin) { 
    518506            // 現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可 
    519507            $objErr->doFunc(array("メールアドレス", 'email'), array("CHECK_REGIST_CUSTOMER_EMAIL")); 
    520508            $objErr->doFunc(array("携帯メールアドレス", 'email_mobile'), array("CHECK_REGIST_CUSTOMER_EMAIL", "MOBILE_EMAIL_CHECK")); 
    521  
    522509        } 
    523510        return $objErr; 
  • branches/version-2_11-dev/data/class/pages/entry/LC_Page_Entry_EmailMobile.php

    r20848 r20910  
    119119        $objErr->arrErr = $objFormParam->checkError(); 
    120120 
     121        // FIXME: lfInitParam() で設定すれば良いように感じる 
    121122        $objErr->doFunc(array("メールアドレス", "email_mobile"), array("CHECK_REGIST_CUSTOMER_EMAIL")); 
    122123 
Note: See TracChangeset for help on using the changeset viewer.