zoukankan      html  css  js  c++  java
  • PHP实现身份证验证

    一般安全要求较高的网站,用户需要输入姓名和身份证号进行实名认证。对于大多数网站来说,很难从公安部门获得身份证接口,不能保证用户输入的姓名与身份证号码唯一配对。

    下面粘贴一段PHP代码,混个脸熟。

    注意:这段代码验证身份证是否合法,即通过身份证的最后一位数校验身份证号码是否存在。不能证明姓名与身份证是唯一配对。

     cal.class.php

     1 <?php
     2 /**
     3  **@param string $numCard  身份证号码
     4  **@param string $arr      将身份证的每位数以数组的形式存放在$arr
     5  **@param string $avg      经过校验算法后的余数
     6  **@param string $duiying  中间变量 
     7  **Date 2013-6-9
     8 **/
     9 
    10   class Identify {
    11      private $numCard;        
    12      private $arr = array(); 
    13      
    14      function __construct() { //初始化
    15         $this->numCard = $_POST[IdentifyCard];
    16         $this->arr=$arr;
    17      }
    18                   
    19      function __toString() {
    20         
    21             for($i=0;$i<=16;$i++) {
    22                  $this->arr[$i]   = substr($this->numCard,$i,1);            //依次获取身份证号码前17位
    23                      $this->mod   = (pow(2,17-$i) % 11) * $this->arr[$i];   //校验位算法,可参考http://baike.baidu.cn/view/5112521.htm
    24                      $this->count = $this->count + $this->mod;              //累加              
    25              }
    26              $avg=$this->count%11;                                          //求余,$avg取值在[0,10]
    27                       
    28              switch ($avg) {
    29                  case 0:
    30                     $duiying=1;
    31                      break;
    32                  case 1:
    33                     $duiying=0;
    34                     break;
    35                  case 2:
    36                     $duiying=X; 
    37                     break; 
    38                  case 3:
    39                     $duiying=9;
    40                     break;
    41                  case 4:
    42                     $duiying=8; 
    43                     break;         
    44                  case 5:
    45                     $duiying=7;
    46                     break;
    47                  case 6:
    48                     $duiying=6;
    49                     break;
    50                  case 7:
    51                     $duiying=5;
    52                     break;
    53                  case 8:
    54                     $duiying=4;
    55                     break;
    56                  case 9:
    57                     $duiying=3;
    58                     break;
    59                  case 10:
    60                     $duiying=2; 
    61                     break;              
    62              }
    63    //获取身份证最后一位数
    64              $last_num = substr($this->numCard,17,1);
    65 
    6//判断用户输入的身份证最后一位数与前17位数转换得到校验位是否相等
    67              if($duiying==$last_num) { 
    68                   $alert= "<script>alert('此身份证有效合法!');</script>";
    69              } else {
    70                   $alert= "<script>alert('此身份证不合法');</script>";
    71              }   
    72              return $alert;
    73      }//End toString
    74   }//End class
    75 ?>

    IdentifyCard.php

     1 <html>
     2   <head>
     3     <title>检验身份证</title>
     4   </head>
     5   <body>
     6      <form method="POST">
     7         <input type="text" name="IdentifyCard" id="IdentifyCard" size="18" 
     8         value="<?php echo $_POST['IdentifyCard'];?>" maxlength="18" required 
     9         placeholder="请输入您的身份证!" /><br />
    10         <input type="submit" id="Submit" name="Submit" value="检验" />
    11 <?php
    12        include "cal.class.php";
    13        echo new Identify();
    14  ?>
    15      </form>
    16   </body>
    17 </html>

    cal.class.php负责逻辑处理,IdentifyCard.php负责显示。

    新手帖,混脸熟。

  • 相关阅读:
    Redis源码分析(二十一)--- anet网络通信的封装
    leetcode 总结part1
    leetcode String to Integer (atoi)
    leetcode 165. Compare Version Numbers
    leetcode 189. Rotate Array
    leetcode 168. Excel Sheet Column Title
    leetcode 155. Min Stack
    leetcode 228. Summary Ranges
    leetcode 204. Count Primes
    leetcode 6. ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/nosqlcoco/p/3130567.html
Copyright © 2011-2022 走看看