身份證校驗-----15位,18位后端


用的是thinkphp5 + layui

代碼:

 1     //添加志願者
 2     public function add()
 3     {
 4         if($this->request->isAjax())
 5         {
 6             $request = new Request();     
 7             $params = $this->request->param();   
 8             $title = $params['title'];
 9             if(empty($title)){
10                 $this->error('請輸入志願者名稱!');
11             } 
12             $volun = $params['volun_no'];
13             if(empty($volun)){
14                 $this->error('請輸入志願者編號!');
15             }   
16             $identity = $params['identity'];
17             if(empty($identity)){
18                 $this->error('請輸入您的身份證號或護照號!');
19             } 
20             $type = $params['identity_type'];
21             if(empty($identity)){
22                 $this->error('請選擇您的證件類型!');
23             } 
24             //類型type=1身份證,type=2護照            
25             if(15==strlen($identity)){ //檢查15位                
26                 $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
27                 $arr_split = array();
28                 @preg_match($regx, $identity, $arr_split);
29                 //檢查生日日期是否正確
30                 $dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
31                 if(!strtotime($dtm_birth))
32                 {
33                     $this->error('您輸入的身份證號碼有誤!');
34                 } 
35                 $result = Db::name('volunteers')->where(['identity'=>$identity])->find();
36                 if($result){
37                     $this->error('該志願者身份證號已存在,請勿重復添加!');
38                 }else{
39                     $data = [
40                         'title'          => isset($params['title']) ? $params['title'] : '',
41                         'volun_no'       => isset($params['volun_no']) ? $params['volun_no'] : '',
42                         'userid'         => isset($params['userid']) ? $params['userid'] : 0,
43                         'createtime'     => time(),
44                         'updatetime'     => time(),
45                         'identity'       => $params['identity'],
46                         'identity_type'  => isset($params['identity_type']) ? $params['identity_type'] : 1,
47                     ]; 
48                     if($result = Db::name('volunteers')->insert($data))
49                     {
50                         return $this->success('志願者添加成功!');
51                     }else{
52                         return $this->error('志願者添加失敗!');
53                     } 
54                     return;
55                 }  
56             }
57             if( strlen($identity ) != 18) {
58                 $this->error('您輸入的身份證號碼有誤!');
59             }
60             $crad_id_base = substr($identity , 0, 17);
61             $crad_id_verify = substr($identity , -1);
62             // 加權因子 
63             $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3);
64             // 校驗碼對應值 
65             $verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
66             $checksum = 0;
67             for( $i = 0; $i < strlen($crad_id_base); $i++ ) {
68                 $checksum += substr($crad_id_base, $i, 1) * $factor[$i % 10];
69             }
70             $mod = $checksum % 11;
71             if( $crad_id_verify == $verify_number_list[$mod] ) {
72                 $result = Db::name('volunteers')->where(['identity'=>$identity])->find();
73                 if($result){
74                     $this->error('該志願者身份證號已存在,請勿重復添加!');
75                 }else{
76                     $data = [
77                         'title'          => isset($params['title']) ? $params['title'] : '',
78                         'volun_no'       => isset($params['volun_no']) ? $params['volun_no'] : '',
79                         'userid'         => isset($params['userid']) ? $params['userid'] : 0,
80                         'createtime'     => time(),
81                         'updatetime'     => time(),
82                         'identity'       => $params['identity'],
83                         'identity_type'  => isset($params['identity_type']) ? $params['identity_type'] : 1,
84                     ]; 
85                     if($result = Db::name('volunteers')->insert($data))
86                     {
87                         return $this->success('志願者添加成功!');
88                     }else{
89                         return $this->error('志願者添加失敗!');
90                     } 
91                     return;
92                 }  
93                 return;
94             } 
95         }                                                    
96         return $this->fetch();
97     }

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM