Home  >  Article  >  php教程  >  【置顶】 PHP简单的身份证验证代码分享

【置顶】 PHP简单的身份证验证代码分享

WBOY
WBOYOriginal
2016-06-07 11:34:591336browse

有时候注册一些网站要求输入身份证号码,然后把自己的信息修改一位或者两位之后发现报错,是不是觉得很神奇呢?
这里需要注意的是:
加权因子和校验码串为互联网统计 尾数自己测试11次 任意身份证都可以通过。

下面是代码:
   <br>  <?php <br />     /**<br>      * 函数说明:验证身份证是否真实<br>      * 注:加权因子和校验码串为互联网统计  尾数自己测试11次 任意身份证都可以通过<br>      * 传递参数:<br>      * $number身份证号码<br>      * 返回参数:<br>      * true验证通过<br>      * false验证失败<br>      */<br>     function isIdCard($number) {<br>         $sigma = '';<br>         //加权因子 <br>         $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);<br>         //校验码串 <br>         $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');<br>         //按顺序循环处理前17位 <br>         for ($i = 0;$i              //提取前17位的其中一位,并将变量类型转为实数 <br>             $b = (int) $number{$i}; <br>             //提取相应的加权因子 <br>             $w = $wi[$i]; <br>             //把从身份证号码中提取的一位数字和加权因子相乘,并累加 得到身份证前17位的乘机的和 <br>             $sigma += $b * $w;<br>         }<br>     //echo $sigma;die;<br>         //计算序号  用得到的乘机模11 取余数<br>         $snumber = $sigma % 11; <br>         //按照序号从校验码串中提取相应的余数来验证最后一位。 <br>         $check_number = $ai[$snumber];<br>         if ($number{17} == $check_number) {<br>             return true;<br>         } else {<br>             return false;<br>         }<br>     }<br>     //eg<br>     if (!isIdCard('000000000000000001')) {<br>     echo "身份证号码不合法";<br>     } else {<br>     echo "身份证号码正确";<br>     }<br>     ?>

AD:真正免费,域名+虚机+企业邮箱=0元

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn