정부기관에서 발표한 소스입니다.
<html>
<head>
<title>외국인등록번호 확인</title>
<META HTTP-EQUIV='Content-type' ConTENT='text/html; CHARSET=euc-kr'>
<script language=ⓙavascript>
function check_no(form){
var fgn_reg_no = document.fgn_check.fgn_reg_no1.value
+ document.fgn_check.fgn_reg_no2.value;
if (fgn_reg_no == ''){
alert('외국인등록번호를 입력하십시오.');
return false;
}
if (fgn_reg_no.length != 13) {
alert('외국인등록번호 자리수가 맞지 않습니다.');
return false;
}
if ((fgn_reg_no.charAt(6) == "5") || (fgn_reg_no.charAt(6) == "6"))
{
birthYear = "19";
}
else if ((fgn_reg_no.charAt(6) == "7") || (fgn_reg_no.charAt(6) == "8"))
{
birthYear = "20";
}
else if ((fgn_reg_no.charAt(6) == "9") || (fgn_reg_no.charAt(6) == "0"))
{
birthYear = "18";
}
else
{
alert("등록번호에 오류가 있습니다. 다시 확인하십시오.");
return false;
}
birthYear += fgn_reg_no.substr(0, 2);
birthMonth = fgn_reg_no.substr(2, 2) - 1;
birthDate = fgn_reg_no.substr(4, 2);
birth = new Date(birthYear, birthMonth, birthDate);
if ( birth.getYear() % 100 != fgn_reg_no.substr(0, 2) ||
birth.getMonth() != birthMonth ||
birth.getDate() != birthDate) {
alert('생년월일에 오류가 있습니다. 다시 확인하십시오.');
return false;
}
form.submit();
return true;
}
</script>
</head>
<boby>
<form name='fgn_check' method=POST action='fgn_check.php'>
외국인등록번호 <input type='text' name='fgn_reg_no1' size=6 maxlength=6> - <input type='text' name='fgn_reg_no2' size=7 maxlength=7>
<input type='button' value='지금 검사' onClick='return form_check(form)'>
</form>
</body>
</html>
--------------------------
<?
if((strlen($fgn_reg_no1) == 6) && (strlen($fgn_reg_no2) == 7)) {
$sum = 0;
$odd = 0;
$reg_no = $fgn_reg_no1."$fgn_reg_no2";
for($i=0 ; $i < 13 ; $i++) {
$reg_no[$i] = intval($reg_no[$i]);
}
$odd = $reg_no[7]*10 + $reg_no[8];
if ($odd % 2 != 0) {
echo("<script language='ⓙavascript'>
alert('외국인등록번호에 오류가 있습니다. 다시 확인하십시오.');
history.back();
</script>");
}
if (($reg_no[11] != 6)&&($reg_no[11] != 7)&&($reg_no[11] != 8)&&($reg_no[11] != 9)) {
echo("<script language='ⓙavascript'>
alert('외국인등록번호에 오류가 있습니다. 다시 확인하십시오.');
history.back();
</script>");
}
$sum = $reg_no[0]*2 + $reg_no[1]*3 + $reg_no[2]*4 + $reg_no[3]*5 + $reg_no[4]*6 + $reg_no[5]*7
+ $reg_no[6]*8 + $reg_no[7]*9 + $reg_no[8]*2 + $reg_no[9]*3 + $reg_no[10]*4 + $reg_no[11]*5;
$sum = $sum % 11;
$sum1 = 11 - $sum;
if($sum1 > 9)
$sum1 = $sum1 % 10;
$sum1 = $sum1 + 2;
if($sum1 > 9)
$sum1 = $sum1 % 10;
$sum = $reg_no[12];
if($sum == $sum1) {
echo("<script language='ⓙavascript'>
alert ('정상입니다.');
history.back();
</script>");
} else {
echo("<script language='ⓙavascript'>
alert('외국인등록번호에 오류가 있습니다. 다시 확인하십시오.');
history.back();
</script>");
}
} else {
echo("<script language='ⓙavascript'>
alert('외국인등록번호에 오류가 있습니다. 다시 확인하십시오.');
history.back();
</script>");
}