# 身份证号码校验 **Repository Path**: duans/id_card_number_verification ## Basic Information - **Project Name**: 身份证号码校验 - **Description**: php+mysql实现身份证号码校验 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2018-09-30 - **Last Updated**: 2022-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 部署步骤 ![项目预览图](doc/media/preview.png) 1. 将`data.sql`导入mysql数据库 2. 修改数据库配置文件`config.php` 3. 在浏览器中直接访问即可 - 校验部分核心代码 ``` header("content-type:text/html;charset=utf-8"); require_once("./db.class.php"); $db=new Connection(); $id=@$_REQUEST['id']; $output=array('errcode'=>0,'msg'=>'ok'); if($id){ //地区码 $area_code=substr($id,0,6); //出生年月日 $birth_code=substr($id,6,8); //顺序码 $list_code=substr($id,14,3); //校验码 $verify_code=substr($id,9,3); //加权因子 $weight_arr=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //校验码对照表 $verify_arr=array(1,0,'x',9,8,7,6,5,4,3,2,1); //乘积之和 $sum=0; foreach($weight_arr as $key=>$val){ $sum+=$val*$id[$key]; } if($verify_arr[$sum%11]!=$id[17]){ $output['errcode']=1; $output['msg']='id is invalid!'; }else{ $sql="select * from area_code where code='{$area_code}'"; $query=$db->query($sql); $ret=$db->get_one($query); $data['area']=$ret['area']?$ret['area']:'未知地区'; $data['list']=$list_code; $data['gender']=$list_code%2==0?'女':'男'; $data['birthday']=date('Y年m月d日',strtotime($birth_code)); $output['data']=$data; } }else{ $output['errcode']=1; $output['msg']='params id is required!'; } echo json_encode($output); ``` ## 身份证号码校验模型 - 身份证号码在线校验接口大部分都是收费的,如"聚合数据"提供的身份证在线校验接口. 我们要做的是使用`php+mysql`去实现身份证号免费校验.因为随着互联网的发展,在线实名认证已经是一个非常普遍的现象,所以大部分网站会有类似的需求. [在线接口平台-聚合数据](https://www.juhe.cn/docs/api/id/103) ![聚合数据-身份证在线校验](doc/media/聚合数据-身份证在线校验.png) - 在实现这个功能之前,我们首先需要去了解第二代居民身份证号的组成规则;下图主要展示的是18位身份证号码的组成规则. ![居民第二代身份证号码组成规则](doc/media/idcode.png) - 下面这张图主要展示的是`17位加权因子`是如何计算得来的 ![身份证号码校验-加权因子计算模型](doc/media/idcode-加权因子计算规则.png) ## 在线随机生成身份证号码 [按照身份证规则在线随机生成身份证号码]](http://shenfenzheng.293.net/?_t_t_t=0.9766452528640315)