/** * 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; }
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; }
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; }