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负责显示。

    新手帖,混脸熟。

  • 相关阅读:
    在Android工程中运行Java程序问题
    sklearn.neighbors.kneighbors_graph的简单属性介绍
    python中的“.T”操作
    numpy中关于*和dot的区别
    一个Window Service引发的感想
    项目管理之初步认识
    由敏捷开发中开发认领自己的工作内容的感想
    SQL Server2008 inner join多种方式的实践
    浅谈业务逻辑和技术哪个更重要
    敏捷人生之初步认识
  • 原文地址:https://www.cnblogs.com/nosqlcoco/p/3130567.html
Copyright © 2011-2022 走看看