身份证号码认证

1、18位身份证构成

  a、身份证第0~6位是地址码;

  b、身份证第7~14位是生日码

  c、身份证第15~17位是顺序码

  d、身份证第18位是校验码

2、验证规则

  1、17位的加权码,顺序不可修改

    7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2

  2、求和。加权与身份证一一对应求乘积再求和。

  3、求模。总和同11的模

  4、模与校验码比较,对应上就是符合。

 

下面是php代码

/**
 * s身份证号码验证
 * @param  [type] $value [description]
 * @return [type]        [description]
 */
function validateCode($value)
{
    /*加权值*/
    $_weighting = ["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"];
    /*校验码*/
    $_validateCode = ["1","0","X","9","8","7","6","5","4","3","2"];
    $icode = str_split($value,1);
    $validateCode = array_pop($icode);
    $sum = 0;
    foreach($icode as $k => $i){
        $sum += bcmul($i,$_weighting[$k]);
    }
    $mod = $sum % 11;

    if($_validateCode[$mod] == $validateCode)
        return true;
    return false;
}
$identify = '440811198907109992';
var_dump(validateCode($identify));

  

  

posted @ 2017-05-05 10:54  秋叶黄了  阅读(587)  评论(0)    收藏  举报