웹마스터 팁
아이디 계정때도 이메일 변경시 재인증 메일 발송하기
2013.06.19 21:40
이메일이 계정일때는 이메일 변경시 재인증을 하나 아이디 계정일 경우에는 쉽게 변경가능해
이메일 인증을 해놔도 무작위 이메일로 변경후 사용한 이메일로 재가입이 가능한 부분이 있죠.
간단하게 수정되는 부분을 막고 기존 기능을 사용합니다.
1.우선 이메일 변경이 불가능하게 하는 부분입니다.
member.admin.view.php 파일
else if($formInfo->name == 'email_address') 검색후
{
$formTag->type = 'email';
$inputTag = '<input type="email" name="email_address" id="email_address" value="'.$memberInfo['email_address'].'"readonly/>';
}
빨간부분을 추가하면 회원정보 변경에서 수정이 되지 않습니다.
member.controller.php 파일
function updateMember($args) 검색후
$args->email_address = $orgMemberInfo->email_address; 를 삽입
list($args->email_id, $args->email_host) = explode('@', $args->email_address); 부분 위쪽에
해당부분을 추가하면 실제 정보가 수정되는 부분에서 기존 이메일값을 가져와 대입합니다.
수정자체를 불가능하게 하실분들은 위에까지만 추가하시면 됩니다.
2.이제 기존 이메일계정시 메일변경부분을 이용하여 메일 재인증폼 띄우기
본인이 사용하는 skin의 member_info.html 파일
cond="$member_config->identifier == 'email_address'" 검색후 삭제합니다.
해당부분은 이메일 계정사용시 표시하도록 하는 부분입니다.
삭제함으로써 아이디계정시에도 표시가 됩니다.
3.여기서 본인이 사용하지 않는 메일로 변경하는 분들을 제재하고 싶은 분들은
member.controller.php 파일
function procMemberModifyEmailAddress() 가장 아래
$this->destroySessionInfo(); 삽입
접속중인 세션을 끊습니다.
function doLogin($user_id, $password = '', $keep_signed = false) 의
if($this->memberInfo->denied == 'Y') 끝나는 부분에
else {
$args->member_srl = $this->memberInfo->member_srl;
$output = executeQuery('member.chkAuthMail', $args);
if ($output->toBool() && $output->data->count != '0') { return new Object(-1,'msg_user_not_confirmed'); }
} 삽입
이메일 인증이 완료되지 않으면 인증전이란 메세지가 뜨며 로그인이 불가능해집니다.
필요에따라 단계별로 적용하시면 됩니다.
좋은정보 감사합니다. 하지만 치명적인 문제가 있습니다.
member.admin.view.php 에서 readonly 삽입 시,
회원가입 할때도 이메일을 입력을 할 수가 없네요ㅠㅠ