웹마스터 팁
page_full_width">
주민등록번호 진위확인
2005.11.08 00:19
────────────────────────────────────────────────────────────────
원 리 :
*주민등록번호 예: 640713-1018433
우선 주민등록번호 마지막자리수만 제외하고,
각각의 자리수마다 다음과 같은 수를 곱하여 전체를 더한다.
6 4 0 7 1 3 1 0 1 8 4 3 체크숫자3
x x x x x x x x x x x x
2 3 4 5 6 7 8 9 2 3 4 5 곱할수없음
-----------------------
+ + + + + + + + + + + +
즉, (6*2)+(4*3)+(0*4)+(7*5)+(1*6)+(3*7)+(1*8)+(0*9)+(1*2)
+(8*3)+(4*4)+(3*5) = 151
그러면 151 이란 수가 나온다. 이 151을 매직키인 11로 나누어 나머지만 취한다.
151 / 11 = 몫: 13 <-- 버림
나머지: 8
마지막 단계로 매직키인 11에서 나머지 8을 빼면 3이란 수가 나오는데,
이숫자가 주민등록번호 마지막 자리의 숫자(체크숫자)와 일치하면 정상적인 주민번호이다.
체크숫자와 11-나머지 = 3이므로 올바른주민번호 !
────────────────────────────────────────────────────────────────
소스정리 : (number.html은 소스해석을 할필요가 없는것같아서 생략)
<?
if((strlen($num)==6) && (strlen($ber)==7)) // number.html에서 첫번째폼,두번쨰폼에 숫자 6,7개가 들어가있나를 strlen함수로 검사
{
$total = 0; // 변수초기화
$id = $num . $ber; // 두개로 나눠져잇는 값을 하나로 합쳐 id변수에 저장
for($i=0; $i<13; $i++)
{
$id[$i] = intval($id[$i]); //정수화함
}
$total = $id[0]*2 + $id[1]*3 + $id[2]*4 + $id[3]*5 + $id[4]*6 + $id[5]*7 + $id[6]*8 +
$id[7]*9 + $id[8]*2 + $id[9]*3 + $id[10]*4 + $id[11]*5; //주민등록번호 식에 맞게 계산
$total = $total%11; //계산
$total2 = 11-$total; // 계산 (위에 원리참조)
if($total2>9) $total2 = $total2 % 10; //체크숫자는 무조건 1의자리니 10이상의 나머지가나온다면 1의자리로 변환함
$total = $id[12]; // 체크숫자를 total함수에 저장
if($total == $total2) // 체크숫자와 나머지가 값이 같은가확인
{
echo "
<script>
alert ('올바른 주민등록번호 입니다.');
history.back();
</script> //같다면 스크립트출력
";
}
else
{
echo "
<script>
alert ('올바른 주민등록번호가 아닙니다.다시입력해 주십시오');
history.go(-1);
</script>
"; // 같지않다면 스크립트출력
}
}
else
{
echo("
<script>
alert ('주민등록번호의 형식 혹은 길이 입력이 올바르지 않습니다.');
history.back();
</script>
"); //소스 맨위 if식에서 6,7자리 결과값이 틀리면 출력
}
?>
● 적으면서 :
소스출저 : php고수로가는길 (서적)
원리출저 : php스쿨 게시판중 발췌
php용 소스입니다.
javascript로 하는 방법도 있지만 클라이언트측 프로그램을 사용할 경우 변조에대한 보장은 책임을 질수 없습니다.
주민등록번호같은 중요한자료를 처리할 때는 php도 곁들이는게 좋으
원 리 :
*주민등록번호 예: 640713-1018433
우선 주민등록번호 마지막자리수만 제외하고,
각각의 자리수마다 다음과 같은 수를 곱하여 전체를 더한다.
6 4 0 7 1 3 1 0 1 8 4 3 체크숫자3
x x x x x x x x x x x x
2 3 4 5 6 7 8 9 2 3 4 5 곱할수없음
-----------------------
+ + + + + + + + + + + +
즉, (6*2)+(4*3)+(0*4)+(7*5)+(1*6)+(3*7)+(1*8)+(0*9)+(1*2)
+(8*3)+(4*4)+(3*5) = 151
그러면 151 이란 수가 나온다. 이 151을 매직키인 11로 나누어 나머지만 취한다.
151 / 11 = 몫: 13 <-- 버림
나머지: 8
마지막 단계로 매직키인 11에서 나머지 8을 빼면 3이란 수가 나오는데,
이숫자가 주민등록번호 마지막 자리의 숫자(체크숫자)와 일치하면 정상적인 주민번호이다.
체크숫자와 11-나머지 = 3이므로 올바른주민번호 !
────────────────────────────────────────────────────────────────
소스정리 : (number.html은 소스해석을 할필요가 없는것같아서 생략)
<?
if((strlen($num)==6) && (strlen($ber)==7)) // number.html에서 첫번째폼,두번쨰폼에 숫자 6,7개가 들어가있나를 strlen함수로 검사
{
$total = 0; // 변수초기화
$id = $num . $ber; // 두개로 나눠져잇는 값을 하나로 합쳐 id변수에 저장
for($i=0; $i<13; $i++)
{
$id[$i] = intval($id[$i]); //정수화함
}
$total = $id[0]*2 + $id[1]*3 + $id[2]*4 + $id[3]*5 + $id[4]*6 + $id[5]*7 + $id[6]*8 +
$id[7]*9 + $id[8]*2 + $id[9]*3 + $id[10]*4 + $id[11]*5; //주민등록번호 식에 맞게 계산
$total = $total%11; //계산
$total2 = 11-$total; // 계산 (위에 원리참조)
if($total2>9) $total2 = $total2 % 10; //체크숫자는 무조건 1의자리니 10이상의 나머지가나온다면 1의자리로 변환함
$total = $id[12]; // 체크숫자를 total함수에 저장
if($total == $total2) // 체크숫자와 나머지가 값이 같은가확인
{
echo "
<script>
alert ('올바른 주민등록번호 입니다.');
history.back();
</script> //같다면 스크립트출력
";
}
else
{
echo "
<script>
alert ('올바른 주민등록번호가 아닙니다.다시입력해 주십시오');
history.go(-1);
</script>
"; // 같지않다면 스크립트출력
}
}
else
{
echo("
<script>
alert ('주민등록번호의 형식 혹은 길이 입력이 올바르지 않습니다.');
history.back();
</script>
"); //소스 맨위 if식에서 6,7자리 결과값이 틀리면 출력
}
?>
● 적으면서 :
소스출저 : php고수로가는길 (서적)
원리출저 : php스쿨 게시판중 발췌
php용 소스입니다.
javascript로 하는 방법도 있지만 클라이언트측 프로그램을 사용할 경우 변조에대한 보장은 책임을 질수 없습니다.
주민등록번호같은 중요한자료를 처리할 때는 php도 곁들이는게 좋으
댓글 5
-
새천년건강체조
2005.11.08 02:13
-
김상도
2005.11.08 18:38
주민번호: 821115 - 16xxxx1인데
마지막번호가 1인데요 해보니까 안되네요 ㅡㅡ;;;
1이 나올려면 몫을 제외한 나머지가 10이 되야는데
어떻게 ㅡㅡ;;; -
치키니aaa
2005.11.08 19:13
건강체조 // ㅋ ;; 예제랍니다. php스쿨에있더군요 . 아무래도 생성한것같습니다
김상도 // 그럴리가요 ㅜㅜ ;; 이소스로 회원가입루틴에 넣은 사이트도 이써요 -
양점동
2005.11.10 13:50
제로보드 회원가입에 어떻게 적용하나요?
궁금해서 질문을 드립니다. -
치키니aaa
2005.11.10 23:08
제로보드에는 현재
number.html에서 이름: 주민번호: 입력후 member_join.php에서 판단후 주민등록폼에 적용한후가입처리
이렇게하려고하는데요. 기존 제로보드에있는 주민번호 검사기능과 다른점이없지만
요즘사이트보면 약관동의->주민번호확인->최종가입양식작성후 아이디발급
이런형식이 많이나와있어서 . 해볼렵니다. 곧올릴게요 `
제목 | 글쓴이 | 날짜 |
---|---|---|
F5 방지
![]() | *이종민* | 2008.11.29 |
펌방지(펌방제해제우회)
[13]
![]() | *이종민* | 2008.11.29 |
팁이라고 할 수 없는 [이미지안투명박스]
[2]
![]() | 엔시™ | 2007.12.23 |
css 간단한 박스 레이아웃입니다.
[8]
![]() | stryper | 2007.11.21 |
[초간단 팁] 글씨에 음영효과를 주는 태그
[2]
![]() | 이유 | 2007.05.02 |
문법적으로 이상이 없는데 빈틈이 생길 때...해결 방법
[5]
![]() | 이명우 | 2006.12.16 |
셀렉트박스 트리메뉴인데 참 이뻐요(링크타켓 - new/blank)
[8]
![]() | 뽀因㉦ㅓо Ø Γ | 2006.09.19 |
게임차트에서 가져오는 실시간 게임순위
[2]
![]() | 絶世美男@ | 2005.12.11 |
필터 효과들
[1]
![]() | keymove | 2005.07.08 |
스킨작업에 중요하게 쓰이는 것들
[2]
![]() | ProSense™ | 2005.04.12 |
XE 어플 개발시 키보드위에 입력창 올리기 [4] | 웹빌드 | 2014.03.11 |
폰갭 처리시 뒤로가기 종료 처리 방법 | 웹빌드 | 2014.03.11 |
board.js 안의 ret_obj 로 추가변수 받아오기 [10] | KS | 2013.12.20 |
게시판에 대해 닉네임,이름 등의 정렬을 추가하는 방법 [1] | sejin7940 | 2014.03.09 |
사이트접속시 모바일기기 접속이면 설정한 페이지로 이동시키기 | 홈피닥터 | 2014.03.09 |
홈페이지 주소창 상세 링크 안보이게 설정 | 헤이즈디자인 | 2014.03.09 |
유동아이피로 고정아이피 만들수있는 유틸 [27] | 론건맨 | 2003.10.10 |
xp어플 개발시 사진 회원 바로잡아 주는 함수 | 웹빌드 | 2014.03.09 |
날짜를 출력하는 간단한 소스입니다 | 낮은자 | 2014.03.07 |
[jQuery] 클릭하면 내용이 사라지는 방법 | 낮은자 | 2014.03.07 |
-_- 진위라는군요 ㅡㅡ;;;;;;;;;;; [보아허니 수도권 지역에서 태어나신 분같은데;;;]