/**
  * emailアドレスから、登録済み会員や退会済み会員をチェックする
  *
  * XXX SC_CheckError からしか呼び出されず, 本クラスの中で SC_CheckError を呼び出している
  *
  * @param  string  $email メールアドレス
  * @return integer 0:登録可能     1:登録済み   2:再登録制限期間内削除ユーザー  3:自分のアドレス
  */
 public function sfCheckRegisterUserFromEmail($email)
 {
     $objCustomer = new SC_Customer_Ex();
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     // ログインしている場合、すでに登録している自分のemailの場合
     if ($objCustomer->isLoginSuccess(true) && SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id'), $email)) {
         // 自分のアドレス
         return 3;
     }
     $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') {
             // 登録済み
             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) {
                 // 再登録制限期間内削除ユーザー
                 return 2;
             }
         }
     }
     // 登録可能
     return 0;
 }
Exemplo n.º 2
0
 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("郵便番号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"));
     $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('メールアドレス', "email", MTEXT_LEN), array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_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 = ? ORDER BY del_flg", array($array["email"]));
         if (count($arrRet) > 0) {
             if ($arrRet[0]['del_flg'] != '1') {
                 // 会員である場合
                 $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) {
                     $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
                 }
             }
         }
     }
     $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", TEL_ITEM_LEN), array("TEL_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("FAX番号", "fax01", "fax02", "fax03", TEL_ITEM_LEN), array("TEL_CHECK"));
     $objErr->doFunc(array("ご性別", "sex"), array("SELECT_CHECK", "NUM_CHECK"));
     $objErr->doFunc(array("パスワード", 'password', PASSWORD_LEN1, PASSWORD_LEN2), array("EXIST_CHECK", "SPTAB_CHECK", "ALNUM_CHECK", "NUM_RANGE_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("パスワードを忘れたときのヒント 質問", "reminder"), array("SELECT_CHECK", "NUM_CHECK"));
     $objErr->doFunc(array("パスワードを忘れたときのヒント 答え", "reminder_answer", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
     $objErr->doFunc(array("メールマガジン", "mailmaga_flg"), array("SELECT_CHECK", "NUM_CHECK"));
     $objErr->doFunc(array("生年月日", "year", "month", "day"), array("CHECK_DATE"));
     return $objErr->arrErr;
 }
Exemplo n.º 3
0
 function lfErrorCheck1($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('メールアドレス', "email", MTEXT_LEN), array("NO_SPTAB", "EXIST_CHECK", "EMAIL_CHECK", "SPTAB_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK"));
     $objErr->doFunc(array('携帯メールアドレス', "email_mobile", MTEXT_LEN), array("NO_SPTAB", "EMAIL_CHECK", "SPTAB_CHECK", "EMAIL_CHAR_CHECK", "MAX_LENGTH_CHECK", "MOBILE_EMAIL_CHECK"));
     //現会員の判定 → 現会員もしくは仮登録中は、メアド一意が前提になってるので同じメアドで登録不可
     $array["customer_id"] = $this->objCustomer->getValue('customer_id');
     if (strlen($array["email"]) > 0) {
         $arrRet = $this->objQuery->select("email, update_date, del_flg", "dtb_customer", "customer_id <> ? and (email = ? OR email_mobile = ?) ORDER BY del_flg", array($array["customer_id"], $array["email"], $array["email"]));
         if (count($arrRet) > 0) {
             if ($arrRet[0]['del_flg'] != '1') {
                 // 会員である場合
                 $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) {
                     $objErr->arrErr["email"] .= "※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br />";
                 }
             }
         }
     }
     $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"));
     return $objErr->arrErr;
 }
 function lfCheckError(&$objFormParam, &$objCustomer)
 {
     $arrRet = $objFormParam->getHashArray();
     $objErr = new SC_CheckError($arrRet);
     $objErr->arrErr = $objFormParam->checkError();
     if (count($objErr->arrErr) > 0) {
         return $objErr->arrErr;
     }
     $email_mobile = strtolower($objFormParam->getValue('email_mobile'));
     $customer_id = $objCustomer->getValue('customer_id');
     $objQuery = new SC_Query();
     // TODO ORDER BY del_flg は必要?
     $arrRet = $objQuery->select('email, email_mobile, update_date, del_flg', 'dtb_customer', '(email = ? OR email_mobile = ?) AND customer_id <> ? ORDER BY del_flg', array($email_mobile, $email_mobile, $customer_id));
     if (count($arrRet) > 0) {
         if ($arrRet[0]['del_flg'] != '1') {
             // 会員である場合
             $objErr->arrErr['email_mobile'] .= '※ すでに登録されているメールアドレスです。<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) {
                 $objErr->arrErr['email_mobile'] .= '※ 退会から一定期間の間は、同じメールアドレスを使用することはできません。<br>';
             }
         }
     }
     return $objErr->arrErr;
 }