> 백엔드 개발 > PHP 튜토리얼 > PHP 기반의 신분증 인증코드 계산방법 구현

PHP 기반의 신분증 인증코드 계산방법 구현

墨辰丷
풀어 주다: 2023-03-29 09:04:01
원래의
2055명이 탐색했습니다.

이 기사에서는 PHP 언어를 사용하여 ID 카드 확인 코드를 구현하여 사용자의 ID 번호가 올바른지 확인하는 방법을 공유합니다.

중국(본토) 시민 ID 카드 번호의 각 숫자의 의미는 여러 언어로 소개됩니다. 인터넷 기사, 여기서는 많이 말하지 않겠습니다. ID 번호의 마지막 숫자는 체크 코드이며 처음 17자리를 기준으로 계산됩니다. 알고리즘은 대략 다음과 같습니다. 처음 17자리의 각 숫자에 일련의 가중치를 곱한 다음 이러한 곱의 합을 계산하고 모듈로 11을 일련 번호로 취하여 마지막으로 이를 추출합니다. 코드 문자열 확인 일련번호에 해당하는 문자를 출력합니다. 물론 인터넷에는 이 검사 코드를 계산하는 방법을 가르치는 많은 기사가 있습니다. 아래에서는 사용자의 ID 번호가 올바른지 확인하는 등 PHP 개발에 사용될 수 있습니다.

중국(본토) 주민등록번호의 첫 17자리가 44010221990101001(참고: 이 사람은 2199년에 태어났습니다)이라고 가정하면, 다음과 같이 PHP 코드 몇 줄을 작성하여 확인 코드를 완성해 보겠습니다. 위의 알고리즘으로 계산합니다. 모두가 이해하기 쉽도록 더 간단한 표현을 사용했습니다. 코드를 참조하세요:

<?php
//身份证号码前17位,可以从各种数据源中获得(如数据库、用户提交的表单等)
$body = &#39;44010221990101001&#39;;
//加权因子
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
//校验码串
$ai = array(&#39;1&#39;, &#39;0&#39;, &#39;X&#39;, &#39;9&#39;, &#39;8&#39;, &#39;7&#39;, &#39;6&#39;, &#39;5&#39;, &#39;4&#39;, &#39;3&#39;, &#39;2&#39;);
//按顺序循环处理前17位
for ($i = 0;$i < 17;$i++) {
//提取前17位的其中一位,并将变量类型转为实数
$b = (int) $body{$i};
//提取相应的加权因子
$w = $wi[$i];
//把从身份证号码中提取的一位数字和加权因子相乘,并累加
$sigma += $b * $w;
}
//计算序号
$number = $sigma % 11;
//按照序号从校验码串中提取相应的字符。
$check_number = $ai[$number];
//输出
echo $body.$check_number;
?>
로그인 후 복사

위 코드를 실행하면 신분증 인증코드가 9로 계산됩니다. 신분증 앞 17자리를 사용해 보세요.

위의 예를 이해했다면 이 코드의 일부 문을 병합하고, 불필요한 변수를 제거하고, 최적화하여 다음 코드를 얻을 수 있습니다.

<?php
$body = &#39;44010221990101001&#39;;
$wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$ai = array(&#39;1&#39;, &#39;0&#39;, &#39;X&#39;, &#39;9&#39;, &#39;8&#39;, &#39;7&#39;, &#39;6&#39;, &#39;5&#39;, &#39;4&#39;, &#39;3&#39;, &#39;2&#39;);
for ($i = 0;$i < 17;$i++) {
$sigma += ((int) $body{$i}) * $wi[$i];
}
echo $body.$ai[($sigma % 11)];
?>
로그인 후 복사

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되길 바랍니다.

관련 권장 사항:

PHP에서 정적 변수를 사용하는 방법에 대한 자세한 예

thinkPHP의 주문 디지털 알림 기능 구현 방법

PHP Sesame Credit 액세스 시 주의 사항

위 내용은 PHP 기반의 신분증 인증코드 계산방법 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿