웹마스터 팁

────────────────────────────────────────────────────────────────
 원  리 :
*주민등록번호 예: 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도 곁들이는게 좋으
제목 글쓴이 날짜
새로운 뉴스티커 [1] 아렌티 2006.04.25
[이 컨트롤을 활성화하고..] 해결하기 [2] 모그422 2006.04.29
플래시 영역에 박스가 생기는것 [4] 로그인 2006.05.03
웹FTP 적용하기 - 꽁수 [4] whenji 2006.05.02
홈페이지 하단 링크주소 없에는 소스 2 [4] 인터니즈 2006.04.27
홈페이지 하단 링크주소 없에는 소스 [6] 인테리어뱅크 2006.04.10
내 홈페이지에 유명사이트 검색엔진을 달자...(네이버,다음,야후 등등) [3] 트래비스 2006.05.10
익스플러로 플래시 영역 박스 생김과 이 컨트롤을 활성화.. [14] 도토리맘 2006.05.15
[소스] 개발자,디자이너 전용 통합검색 스크립트 [1] 김성대 2006.05.19
부모창과 함께 닫히는 팝업창(IE, FF) 행복한고니 2006.07.06
깔끔한 이미지 펼침박스 [2] ▩윤미 2006.07.11
환상적인 이미지 갤러리 (4차원세계에 빠져보세요) [5] ▩윤미 2006.07.11
상단 타이틀바 흐르는 텍스트 왜,그러지 2006.07.14
위에서 아래로 좌에서 우로... [1] 왜,그러지 2006.07.14
날라서 붙는 텍스트 [1] 왜,그러지 2006.07.17
자바스크립트로 만든 테트리스 일명 자트리스 ^^;; [12] beMax 2006.07.27
배경색을 마우스로 크릭하여 지정하여 준다. 왜,그러지 2006.07.27
로또 번호 추출기 [3] 왜,그러지 2006.07.27
텍스트 선택하기 행복한고니 2006.09.06
로또 번호 생성기 허접..ㅋㅋ [5] 삐따기 2006.10.04