웹마스터 팁

────────────────────────────────────────────────────────────────
 원  리 :
*주민등록번호 예: 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도 곁들이는게 좋으
제목 글쓴이 날짜
F5 방지 file *이종민* 2008.11.29
펌방지(펌방제해제우회) [13] file *이종민* 2008.11.29
팁이라고 할 수 없는 [이미지안투명박스] [2] file 엔시™ 2007.12.23
css 간단한 박스 레이아웃입니다. [8] file stryper 2007.11.21
[초간단 팁] 글씨에 음영효과를 주는 태그 [2] file 이유 2007.05.02
문법적으로 이상이 없는데 빈틈이 생길 때...해결 방법 [5] file 이명우 2006.12.16
셀렉트박스 트리메뉴인데 참 이뻐요(링크타켓 - new/blank) [8] file 뽀因㉦ㅓо Ø Γ 2006.09.19
게임차트에서 가져오는 실시간 게임순위 [2] file 絶世美男@ 2005.12.11
필터 효과들 [1] file keymove 2005.07.08
스킨작업에 중요하게 쓰이는 것들 [2] file 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