ECCUBEで『会員登録時のメール重複チェック(バリデーション)を解除する』方法
ECCUBEの会員登録画面にはメール重複チェックのバリデーションが入っています。場合によっては必要ではなくなるので、解除するためのプログラムを配布します。※かなり適当なプログラムなので、利用には注意してください。
使っているECCUBEの環境は以下のとおりです。
EC-CUBEバージョン 2.13.1
PHPバージョン PHP 5.3.15
DBバージョン PostgreSQL 8.4.8
編集ファイルは2つあります。
編集ファイルその1
ファイルのpath:/data/class/helper/SC_Helper_Customer.php
場所:156行目あたり
/**
* 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 0;
}
$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 0;
} 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 0;
}
}
}
// 登録可能
return 0;
}
編集ファイルその2
ファイルのpath:/data/class/helper/SC_Helper_Customer.php
場所:453行目あたり
/*
* 会員登録エラーチェック
* @param SC_FormParam $objFormParam SC_FormParam インスタンス
* @access public
* @return array エラーの配列
*/
public function sfCustomerEntryErrorCheck(&$objFormParam)
{
$objErr = SC_Helper_Customer_Ex::sfCustomerCommonErrorCheck($objFormParam);
$objErr = SC_Helper_Customer_Ex::sfCustomerRegisterErrorCheck($objErr);
/*
* sfCustomerRegisterErrorCheck() では, ログイン中の場合は重複チェック
* されないので, 再度チェックを行う
*/
$objCustomer = new SC_Customer_Ex();
if ($objCustomer->isLoginSuccess(true)
&& SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id'), $objFormParam->getValue('email'))) {
$objErr->arrErr['email'] .= '※ すでに会員登録で使用されているメールアドレスです。
';
}
if ($objCustomer->isLoginSuccess(true)
&& SC_Helper_Customer_Ex::sfCustomerEmailDuplicationCheck($objCustomer->getValue('customer_id'), $objFormParam->getValue('email_mobile'))) {
$objErr->arrErr['email_mobile'] .= '※ すでに会員登録で使用されているメールアドレスです。
';
}
return 0;
}
以上です。
これでメールのバリデーションが外れました。
※P.S:無料メルマガで発信中:過去の僕は「ブログ発信で5億円」を稼ぎました。次は「30億円」を目指します。挑戦しつつ、裏側の思考を「メルマガ」から発信します。不満足なら1秒で解約できます。無料登録は「こちら」です。