(13) 주민등록 체크 - 아래 소스의 녹색부분이 이전의 login_new.asp 문서에서 추가된 부분입니다. 주민등록번호의 앞자리와 뒷자리를 각각 따로 전달받아 주민등록생성법칙에 어긋나는 경우 경고 멧세지를 출력시킵니다.

login_new.asp
<html>
<head><title>새로운회원</title>
<script language="JavaScript">
<!--

// 입력폼값 체크 함수
function CheckForm()
{
    var id= document.form.elements["id"].value;
    var pwd= document.form.elements["pwd"].value;
    var pwd2= document.form.elements["pwd2"].value;
    var name= document.form.elements["name"].value;
    var email= document.form.elements["email"].value;
    var address= document.form.elements["address"].value;
    var jumin1=document.form.elements["jumin1"].value;
    var jumin2=document.form.elements["jumin2"].value;
    var type = check_type(jumin2);


    // 회원아이디 체크
    if(id.length < 4 || id.length > 15) {
        alert("4자이상 15자 이하의 아이디를 입력하세요.");
        document.form.id.focus();
        return false;
    }
    else {
        // 아이디의 유효성 체크
        if(!check_username(id) ||  id.indexOf(" ") != -1) {
            alert("ID는 공백 없이 영문자나 숫자만 입력 하실수 있습니다!");
            document.form.id.focus();
            return false;
        }
    }
    // 비밀번호 체크
    if(pwd.length < 4 || pwd.length > 15) {
        alert("4자이상 15자 이하의 비밀번호를 입력하세요.");
        document.form.pwd.focus();
        return false;
    }
    else {
        // 비밀번호의 유효성 체크
        if(!check_username(pwd) ||  pwd.indexOf(" ") != -1) {
            alert("비밀번호는 공백 없이 영문자나 숫자만 입력 하실수 있습니다!");
            document.form.pwd.focus();
            return false;
        }
        else {
            if(pwd != pwd2) {
            alert("비밀번호와 비번확인이 일치하지 않습니다.");
            document.form.pwd2.focus();
            return false;
            }
        }
    }
    // 이름 체크
    if(name.length < 1 || name.indexOf(" ") != -1) {
       alert("이름을 공백없이 입력하시오.");
        document.form.name.focus();
        return false;
    }
    // 주민등록번호 체크
    if (type != 1 && type != 2 && type != 3 && type != 4) {
        alert("주민등록번호 오류입니다.");
        document.form.jumin1.focus();
  return false;
    }
    if (!check_number(jumin1,jumin2)) {
        alert("주민등록번호 오류입니다.");
        document.form.jumin1.focus();
        return false;
    }

    // 이메일체크
    if (!check_email(email)) {
        document.form.email.focus();
        return false;
    }
}

// 이름의 유효성 체크 함수
function check_username(urstr)
{
  var newstr = new String(urstr);
  var i; var result;
  for(i=0; i<urstr.length; i++) {
    if((urstr.charAt(i) >= "A") && (urstr.charAt(i) <= "Z"))
      result = true;
    else
      if((urstr.charAt(i) >= "a") && (urstr.charAt(i) <= "z"))
        result = true;
      else
        if((urstr.charAt(i) >= "0") && (urstr.charAt(i) <= "9"))
          result = true;
        else
          return false;
  }
  if(result == true)
    return true;
}

// 이메일 유효성 체크 함수
function check_email(email)
{
  if (!validate_ascii_data(email)) {
    alert("E-Mail에 잘못된 문자가 있습니다. 다시 입력해 주십시오.");
    return false
  }
  var invalidChars = "\"|&;<>!*\'\\"   ;
  for (var i = 0; i < invalidChars.length; i++) {
    if (email.indexOf(invalidChars.charAt(i)) != -1) {
        alert("E-Mail에 잘못된 문자가 있습니다. 다시 입력해 주십시오.");
        return false;
    }
  }
  if (email.indexOf("@")==-1){
        alert("E-Mail이 잘못되었습니다. '@'가 있는지 확인해 주십시오.");
        return false;
  }
  if (email.indexOf(" ") != -1){
        alert("E-Mail에 공백이 있습니다. 다시 입력해 주십시오.");
        return false;
  }
  if(window.RegExp) {
    var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
    var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
    var reg1 = new RegExp (reg1str);
    var reg2 = new RegExp (reg2str);
    if (reg1.test(email) || !reg2.test(email)) {
    alert("E-Mail에 잘못된 문자가 있습니다. 다시 입력해 주십시오.");
    return false;
    }
  }
  return true;
}

function validate_ascii_data(urstr)
{
  var i; var result;
  for(i=0; i<urstr.length; i++) {
    if((urstr.charAt(i) < " ") || (urstr.charAt(i) > "~"))
      return false;
  }
  return true;
}

// 주민등록번호 체크 함수
function check_type(name)
{
    return(name.charAt(0) - '0');
}
function check_number(name1,name2)
{
    var weight = 0;
    var check;
    weight += (name1.charAt(0)) * 2;        
    weight += (name1.charAt(1)) * 3;        
    weight += (name1.charAt(2)) * 4;      
    weight += (name1.charAt(3)) * 5;      
    weight += (name1.charAt(4)) * 6;    
    weight += (name1.charAt(5)) * 7;    
    weight += (name2.charAt(0)) * 8;  
    weight += (name2.charAt(1)) * 9;  
    weight += (name2.charAt(2)) * 2;
    weight += (name2.charAt(3)) * 3;
    weight += (name2.charAt(4)) * 4;
    weight += (name2.charAt(5)) * 5;
    check = (11 - weight % 11) % 10;
    return ((name2.charAt(6) - '0') == check ? 1 : 0);
}


// -->
</script>

<style type="text/css">
<!--
    BODY, table, tr, td, input, textarea, select
    {
        font-family: 굴림;
        font-size: 9pt;
    }
    A:link {color:#000000;text-decoration:none;}
    A:visited {color:black;text-decoration:none;}
    A:active {color:blue;text-decoration:none;}
    A:hover {color:red;text-decoration:underline;}
-->
</style>

</head>
<body>

<form action=./login_insert.asp method=post name=form onSubmit="Javascript:return CheckForm();">
<table border=0 width=100% cellpadding=0 cellspacing=0>
<tr><td bgcolor=black>
    <table border=0 width=100% cellpadding=3 cellspacing=1>
    <tr><td bgcolor=#C7E4FD align=center><b>회원가입양식</b></td></tr>
    <tr><td bgcolor=white>
        <table border=0 witdh=100% cellpadding=0 cellspacing=0>
        <tr><td align=center bgcolor=#eff8ff>아이디</td>
        <td> <input type=text size=15 name=id style="border:1 dashed;"></td></tr>
        <tr><td align=center bgcolor=#eff8ff>비밀번호</td>
        <td> <input type=password size=15 name=pwd style="border:1 dashed;"></td></tr>
        <tr><td align=center bgcolor=#eff8ff>비번확인</td>
        <td> <input type=password size=15 name=pwd2 style="border:1 dashed;"></td></tr>
        <tr><td align=center bgcolor=#eff8ff>이름</td>
        <td> <input type=text size=15 name=name style="border:1 dashed;"></td></tr>
        <tr><td align=center bgcolor=#eff8ff>주민등록</td>
        <td> <INPUT name=jumin1 maxLength=6 size=6 style="border:1 dashed;"> - <INPUT name=jumin2 maxLength=7 size=7 style="border:1 dashed;"></td></tr>

        <tr><td align=center bgcolor=#eff8ff>이메일</td>
        <td> <input type=text size=20 name=email style="border:1 dashed;"></td></tr>
        <tr><td align=center bgcolor=#eff8ff>주소</td>
        <td> <input type=text size=60 MAXLENGTH=200 name=address style="border:1 dashed;"></td></tr>
        </table>
    </td></tr>
    </table
</td></tr>
</table>
<table border=0 width=100% cellpadding=3 cellspacing=3>
<tr><td align=center>
    <input type=image src=./img/ok.gif alt="회원가입">
</table>
</form>

</body>
</html>


(14) 다음은 주민등록오류의 경우 화면입니다.