회원가입시 메일입력 오타방지 채택완료
회원가입시 메일작성할 때 기본 폼은 text로 타이핑해서 입력하게 되어있는데...
회원정보를 보면 오타난 분들이 너무 많아서
오타방지를 위해 메일 아이디는 직접입력 메일 @뒤에 오는 도메인부분을 select으로 선택하게 하려고
폼을 바꿔놓았습니다...
</p>
<p><!-- 오타방지를 위해 메일 선택하게 바꿈 -->
<li>
<label for="reg_mb_email" class="sound_only">E-mail<strong>필수</strong></label></p>
<p> <?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>
<!-- // 오타방지를 위해 메일 선택하게 바꿈 --></p>
<p>
스크립트 부분도 추가했습니다.
</p>
<p>// 메일 선택 작업 추가
$('#mb_email3').change(function(){
var $this = $(this);</p>
<p> 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('메일 선택됨');
}</p>
<p>});</p>
<p>
/skin/member/register_form.skin.php 페이지에 이렇게 수정을 했습니다.
/bbs/register_form_update.php 에서도 $mb_mail 수정
</p>
<p>$mb_email = trim($_POST['mb_email1']).'@'.trim($_POST['mb_email2']);</p>
<p>
/js/jquery.register_form.js 에 reg_mb_email_check 함수 수정
ajax 로 불러오는 data 부분 수정
</p>
<p>data : {</p>
<p> "reg_mb_email": $("#reg_mb_email1").val() + '@' + $('#reg_mb_email2').val(),</p>
<p> "reg_mb_id": encodeURIComponent($("#reg_mb_id").val())</p>
<p>}</p>
<p>
/bbs/ajax.mb_email.php 의 $mb_email 수정
</p>
<p>$mb_email = trim($_POST['reg_mb_email1']).'@'.trim($_POST['reg_mb_email2']);</p>
<p>
이렇게 수정을 했는데 정작 회원 가입하려고 하면
이메일 형식이 아니라고 나옵니다...
어디를 손봐야 회원가입할때 이메일 아이디는 text로 받고 도메인은 select으로 받게끔 할 수 있을까요??ㅠㅠㅠㅠㅠ
답변 4개
" required class="frm_input email required" placeholder="E-mail">
" readonly class="frm_input email required" placeholder="E-mail 선택">
요기 각각 email 항목 빼세요
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
/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']);
이렇게 바꿔보세요
자세히 테스트는 안해봐서 오타가 있거나 에러날수도 있을거 같은 아마 이렇게 하면 될겁니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
/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);
*/
답변에 대한 댓글 1개
도와주셔서 감사합니다... 건드릴 곳이 많은거 같네요;;ㅠㅠㅠㅠ
개발자가 아니라서 sir 내에서 검색해가면서 해보려 했지만... db도 건드려야할 것 같아요...
mb_email에 통으로 저장되는 것도 아이디랑 도메인 분류해서 저장해야
마이페이지에서 출력시킬때도 db에 나뉘어 저장된 값을 불러와야 할거 같은데
제가 건드릴 수 없는 부분인거 같아서... 당장은 제가 하기엔 버거울거 같아요ㅠㅠㅠ
나중에 천천히 뜯어보면서 해봐야 할거 같습니다... 감사합니다~!!ㅠㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
말씀해주신대로 email 클래스를 빼니까 alert의 문구가 달라졌습니다.
E-mail : 이메일 주소 형식이 아닙니다. <-- 기존에 뜨던 alert 문구
E-mail 주소가 형식에 맞지 않습니다. <-- email 클래스 제거후 뜨는 alert 문구
이렇게 바뀌었습니다... 저 alert 문구를 찾아보니 /lib/register.lib.php 파일내에
valid_mb_email 함수에서 $reg_mb_email 을 매칭시켜서 주소형식을 걸러내는거 같은데
$reg_mb_email을 어디서 불러오는지 알수 있을까요...??ㅠㅠㅠ
$reg_mb_email 이 변수를 불러오는 곳을 찾아서 변수값을 바꿔줘야 할거 같은데
회원가입, 이메일 관련해서 파일을 찾아봐도 저 변수가 정의되어 있는 곳을 못찾겠습니다....ㅠㅠㅠ