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

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

WBOY
WBOYoriginal
2016-06-07 11:34:591301parcourir

有时候注册一些网站要求输入身份证号码,然后把自己的信息修改一位或者两位之后发现报错,是不是觉得很神奇呢?
这里需要注意的是:
加权因子和校验码串为互联网统计 尾数自己测试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元

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn