1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | <script> 'use strict'; let idCheckSw = 0; let nickCheckSw = 0; function fCheck() { // 유효성 검사..... // 아이디,닉네임,성명,이메일,홈페이지,전화번호,비밀번호 등등.... let regMid = /^[\w]{4,20}$/; let regPwd = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[\W_]).{4,20}$/; let regNickName = /^[가-힣\w]{2,7}$/; let regName = /^[가-힣]{2,5}$/; let regEmail = /^[a-zA-Z0-9]([-_]?[a-zA-Z0-9])*$/; let regHomePage = /(https?:\/\/)?([a-zA-Z\d-]+)\.([a-zA-Z\d-]{2,8})([\/\w\.-]*)*\/?$/ let regTel = /\d{2,3}-\d{3,4}-\d{4}$/; let tel1 = myform.tel1.value; let tel2 = myform.tel2.value.trim(); let tel3 = myform.tel3.value.trim(); let tel = tel1 + "-" + tel2 + "-" + tel3; if(!regMid.test(myform.mid.value)) { alert("아이디는 영문, 숫자, 그리고 밑줄(_)을 포함하여 4~20자까지 입력하세요."); myform.mid.focus(); return false; } if(!regPwd.test(myform.pwd.value)) { alert("비밀번호는 영문자/숫자/특수문자가 1개이상이면서 4~20자까지 작성해 주세요."); myform.pwd.focus(); return false; } if(!regNickName.test(myform.nickName.value)){ alert("닉네임은 한글,영문,숫자 _ 를 포함하여 2~7자까지 입력하세요.") myform.nickName.focus(); return false; } if(!regName.test(myform.name.value)){ alert("이름은 한글로 2~5자까지 입력하세요.") myform.name.focus(); return false; } if(!regEmail.test(myform.email1.value)) { alert("이메일 형식에 맞도록 작성해 주세요."); myform.email.focus(); return false; } if(!regTel.test(tel)) { alert("전화번호 형식(000-0000-0000)에 맞도록 작성해 주세요."); myform.tel.focus(); return false; } if(!regHomePage.test(myform.homePage.value)) { alert("홈페이지 형식에 맞춰서 작성해 주세요."); myform.homePage.focus(); return false; } // 정규식을 이용한 유효성검사처리..... // 검사를 끝내고 필요한 내역들을 변수에 담아 회원가입처리한다. let email1 = myform.email1.value.trim(); let email2 = myform.email2.value; let email = email1 + "@" + email2; let postcode = myform.postcode.value + " "; let roadAddress = myform.roadAddress.value + " "; let detailAddress = myform.detailAddress.value + " "; let extraAddress = myform.extraAddress.value + " "; let address = postcode + "/" + roadAddress + "/" + detailAddress + "/" + extraAddress; if(idCheckSw == 0) { alert("아이디 중복체크버튼을 눌러주세요"); document.getElementById("midBtn").focus(); } else if(nickCheckSw == 0) { alert("닉네임 중복체크버튼을 눌러주세요"); document.getElementById("nickNameBtn").focus(); } else { myform.email.value = email; myform.tel.value = tel; myform.address.value = address; myform.submit(); } } // 아이디 중복체크 function idCheck(fId) { let fVal = fId.value; let fName = fId == mid ? "아이디" : "닉네임"; if(fVal.trim() == "") { alert(fName+"를 입력하세요!"); fId.focus(); } else { $.ajax({ url : "${ctp}/MemberIdCheck.mem", type : "post", data : { fVal: fVal, fName:fName}, success:function(res) { if(res != 0) { alert("이미 사용중인 "+fName+" 입니다. 다시 입력하세요."); fId.focus(); } else { alert("사용 가능한 "+fName+" 입니다."); sw = 1; if(fId == mid) { $("#midBtn").prop("disabled",true); idCheckSw =1; } else if(fId == nickName){ $("#nickNameBtn").prop("disabled",true); nickCheckSw =1; } } }, error : function() { alert("전송 오류!"); } }); } } function changeS(btn){ document.getElementById(btn).disabled = false; if(btn=="midBtn") idCheckSw =0; else nickCheckSw =0; } -------------------------------------------- <label for="mid">아이디 : <input type="button" value="아이디 중복체크" id="midBtn" class="btn btn-secondary btn-sm" xxxxonclick="idCheck(mid)"/></label> <input type="text" class="form-control" name="mid" id="mid" placeholder="아이디를 입력하세요." required autofocus oninput="changeS('midBtn')"/> <label for="nickName">닉네임 : <input type="button" id="nickNameBtn" value="닉네임 중복체크" class="btn btn-secondary btn-sm" xxxxonclick="idCheck(nickName)"/></label> <input type="text" class="form-control" id="nickName" placeholder="별명을 입력하세요." name="nickName" required oninput="changeS('nickNameBtn')" /> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package member; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MemberIdCheckCommand implements MemberInterface { @Override public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String fName = request.getParameter("fName")==null ? "" : request.getParameter("fName"); String fVal = request.getParameter("fVal")==null ? "" : request.getParameter("fVal"); System.out.println(fName); System.out.println(fVal); MemberDAO dao = new MemberDAO(); MemberVO vo = null; if(fName.equals("아이디")){ vo = dao.getMemberIdCheck(fVal); } else { vo = dao.getMemberNickCheck(fVal); } String str = "0"; if(vo.getMid() != null) str = "1"; response.getWriter().write(str); } } | cs |
비밀번호 솔트키는 주말에 한번 해봐야겠어요 😴
첫댓글 정규식을 활용한 유효성검사 잘 처리 되었네요...
기타 회원화면..도 체크해 보시고요.. 수고하셨습니다.