질문/조언팁/리소스 공유

회원가입 메일인증 제한 애드온을 사용해서 지정한 도메인의 이메일만 가입을 받을 수 있습니다.

 

https://xetown.com/point_contents/22105

 

 

그런데 이메일 입력단계에서 체크를 하지 않고 회원을 등록하는 과정에서 체크해서 지정된 메일이 아닌면 메시지를 출력하고 가입양식이 초기화 됩니다.

 

이때 발견한 사람은 좀 황당하고 다시 가입시도가 귀찮아 질 수 있습니다.

 

이메일 입력 즉시 허용되지 않은 이메일이라고 알려주게 해 보았습니다.

 

기존 애드온 파일에 아래 내용을 추가했습니다.

 

 

if($called_position == 'before_module_proc' && $act == 'procMemberCheckValue' && $addon_info->activation_domain)
{
Context::loadLang(_XE_PATH_ . 'addons/email_activation_limit/lang');

$name = Context::get('name');
if($name !='email_address') return;
$value = trim(Context::get('value'));

$email_ih = explode('@', $value);
$activation_domain = explode(',',$addon_info->activation_domain);
if(!in_array($email_ih[1],$activation_domain))
{
$this->setMessage('허용되지 않은 이메일 입니다.');
}
}

 

메시지는 그냥 귀찮아서 하드코딩으로 때려 넣었습니다. lang 에 넣어서 사용하세요.

 

이것 저것 해보다가 잘 안되는거 어찌해서 잘 되는 것은 확인했는데요. 혹시 고쳐야 할 부분이 있다면 알려주시면 다른 분들이 도움이 되실 것 같습니다.

 

 

mail.png

 

 

 

 

 

 

이메일 변경시에도 허용되지 않은 도메인을 변경을 시도시 경고창을 띄우고 변경작업이 중지되도록 했습니다.

 

if($this->act == 'procMemberModifyEmailAddress' && $addon_info->activation_domain)
{
Context::loadLang(_XE_PATH_ . 'addons/email_activation_limit/lang');

$email_address = Context::get('email_address');
if(!$email_address) return;

$email_ih = explode('@', $email_address);
$activation_domain = explode(',',$addon_info->activation_domain);
if(!in_array($email_ih[1],$activation_domain))
{
return $this->error = sprintf(Context::getLang('msg_error_activation_domain'),$addon_info->activation_domain);
}
}

 Screenshot_20190105-105411_1546653515652.jpg

  • profile
    이메일 변경시에는 제한이 안걸리는 것을 변경시에도 제한이 걸리도록 추가해보았습니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...