회원가입시 메일입력 오타방지
본문
회원가입시 메일작성할 때 기본 폼은 text로 타이핑해서 입력하게 되어있는데...
회원정보를 보면 오타난 분들이 너무 많아서
오타방지를 위해 메일 아이디는 직접입력 메일 @뒤에 오는 도메인부분을 select으로 선택하게 하려고
폼을 바꿔놓았습니다...
<!-- 오타방지를 위해 메일 선택하게 바꿈 -->
<li>
<label for="reg_mb_email" class="sound_only">E-mail<strong>필수</strong></label>
<?php if ($config['cf_use_email_certify']) { ?>
<span class="frm_info">
<?php if ($w=='') { echo "E-mail 로 발송된 내용을 확인한 후 인증하셔야 회원가입이 완료됩니다."; } ?>
<?php if ($w=='u') { echo "E-mail 주소를 변경하시면 다시 인증하셔야 합니다."; } ?>
</span>
<?php } ?>
<input type="hidden" name="old_email" value="<?php echo $member['mb_email'] ?>">
<input type="text" name="mb_email1" id="reg_mb_email1" value="<?php echo isset($member['mb_email1'])?$member['mb_email1']:''; ?>" required class="frm_input email required" placeholder="E-mail">
@
<input type="text" name="mb_email2" id="reg_mb_email2" value="<?php echo isset($member['mb_email2'])?$member['mb_email2']:''; ?>" readonly class="frm_input email required" placeholder="E-mail 선택">
<select id="mb_email3" class="frm_input">
<option value="" selected="selected">E-mail 선택</option>
<option value="naver.com">naver.com</option>
<option value="daum.net">daum.net</option>
<option value="nate.com">nate.com</option>
<option value="hotmail.com">hotmail.com</option>
<option value="yahoo.com">yahoo.com</option>
<option value="empas.com">empas.com</option>
<option value="korea.com">korea.com</option>
<option value="dreamwiz.com">dreamwiz.com</option>
<option value="gmail.com">gmail.com</option>
<option value="etc">직접 입력</option>
</select>
</li>
<!-- // 오타방지를 위해 메일 선택하게 바꿈 -->
스크립트 부분도 추가했습니다.
// 메일 선택 작업 추가
$('#mb_email3').change(function(){
var $this = $(this);
if( $this.val() == 'etc' ) {
$('#reg_mb_email2').prop('readonly',false).val('직접 입력').focus();
//console.log('직접 입력');
}else if( $this.val() != '' ) {
$('#reg_mb_email2').prop('readonly',true).val($this.val());
//console.log('메일 선택됨');
}
});
/skin/member/register_form.skin.php 페이지에 이렇게 수정을 했습니다.
/bbs/register_form_update.php 에서도 $mb_mail 수정
$mb_email = trim($_POST['mb_email1']).'@'.trim($_POST['mb_email2']);
/js/jquery.register_form.js 에 reg_mb_email_check 함수 수정
ajax 로 불러오는 data 부분 수정
data : {
"reg_mb_email": $("#reg_mb_email1").val() + '@' + $('#reg_mb_email2').val(),
"reg_mb_id": encodeURIComponent($("#reg_mb_id").val())
}
/bbs/ajax.mb_email.php 의 $mb_email 수정
$mb_email = trim($_POST['reg_mb_email1']).'@'.trim($_POST['reg_mb_email2']);
이렇게 수정을 했는데 정작 회원 가입하려고 하면
이메일 형식이 아니라고 나옵니다...
어디를 손봐야 회원가입할때 이메일 아이디는 text로 받고 도메인은 select으로 받게끔 할 수 있을까요??ㅠㅠㅠㅠㅠ
!-->!-->!-->!-->!-->
답변 4
<input type="text" name="mb_email1" id="reg_mb_email1" value="<?php echo isset($member['mb_email1'])?$member['mb_email1']:''; ?>" required class="frm_input email required" placeholder="E-mail">
<input type="text" name="mb_email2" id="reg_mb_email2" value="<?php echo isset($member['mb_email2'])?$member['mb_email2']:''; ?>" readonly class="frm_input email required" placeholder="E-mail 선택">
요기 각각 email 항목 빼세요
/bbs/ajax.mb_email.php 파일을 열어서
아래와 같이 모두 주석처리 해보세요
/*
if ($msg = empty_mb_email($mb_email)) die($msg);
if ($msg = valid_mb_email($mb_email)) die($msg);
if ($msg = prohibit_mb_email($mb_email)) die($msg);
if ($msg = exist_mb_email($mb_email, $mb_id)) die($msg);
*/
/js/jquery.register_form.js
에서 reg_mb_email_check() 함수에 나눠진 이메일을 아래처럼 합쳐서 보내시고요
"reg_mb_email": $("#reg_mb_email1").val() + '@' + $("reg_mb_email2").val();
/bbs/register_form_update.php 에서
38번째 줄쯤에
$mb_email = trim($_POST['mb_email']);
이걸
$mb_email = trim($_POST['mb_email1']) . '@' . trim($_POST['mb_email2']);
이렇게 바꿔보세요
자세히 테스트는 안해봐서 오타가 있거나 에러날수도 있을거 같은 아마 이렇게 하면 될겁니다.
혹시 이거 해결하셨는지요??
저는 가입하려고하면 올바른방법으로 이용하세요라고 나오는데
근데 회원정보수정에서는 잘됩니다.