외국인 등록 번호 체크 루틴. 새로운 것
JS는 네이버 소스, PHP는 JS를 PHP로 바꾼 것.
JS
// 외국인 등록번호 (20120703)
function isForeSSN(socno)
{
var total
=0;
var parity = 0;
var fgnNo = new Array(13);
for(i=0;i <
13;i++) fgnNo[i] = parseInt(socno.charAt(i));
// if(fgnNo[11] < 6) return false; //<—- 이부분 때문에 에러가나는 경우가 있을 것이다.(과거에는 체크해야하지만, 지금은 체크하면 안된다.
if((parity = fgnNo[7]*10 + fgnNo[8])&1) return false;
var weight =
2;
for(i=0,total=0;i < 12;i++)
{
var sum = fgnNo[i] *
weight;
total += sum;
if(++weight > 9)
weight=2;
}
if((total = 11 - (total%11)) >= 10) total -=
10;
if((total += 2) >= 10) total -= 10;
if(total != fgnNo[12])
return false;
return true;
}
#PHP
// 외국인 등록번호
function
isForeSSN ($socno)
{
$total =0;
$parity = 0;
$fgnNo =
array();
for($i=0;$i < 13;$i++) $fgnNo[] = (int)$socno[$i];
// if($fgnNo[11] < 6) return false;//<—- 이부분 때문에 에러가나는 경우가 있을 것이다.(과거에는 체크해야하지만, 지금은 체크하면 안된다.
if(($parity = $fgnNo[7]*10 + $fgnNo[8])&1) return false;
$weight
= 2;
for($i=0,$total=0;$i < 12;$i++)
{
$sum = $fgnNo[$i] *
$weight;
$total += $sum;
if(++$weight > 9)
$weight=2;
}
if(($total = 11 - ($total%11)) >= 10) $total -=
10;
if(($total += 2) >= 10) $total -= 10;
if($total !=
$fgnNo[12]) return false;
return true;
}