您的位置:首页 > 编程语言 > PHP开发

PHP实现身份证验证

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

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

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

cal.class.php

<?php
/**
**@param string $numCard  身份证号码
**@param string $arr      将身份证的每位数以数组的形式存放在$arr
**@param string $avg      经过校验算法后的余数
**@param string $duiying  中间变量
**Date 2013-6-9
**/

class Identify {
private $numCard;
private $arr = array();

function __construct() { //初始化
$this->numCard = $_POST[IdentifyCard];
$this->arr=$arr;
}

function __toString() {

for($i=0;$i<=16;$i++) {
$this->arr[$i]   = substr($this->numCard,$i,1);            //依次获取身份证号码前17位
$this->mod   = (pow(2,17-$i) % 11) * $this->arr[$i];   //校验位算法,可参考http://baike.baidu.cn/view/5112521.htm
$this->count = $this->count + $this->mod;              //累加
}
$avg=$this->count%11;                                          //求余,$avg取值在[0,10]

switch ($avg) {
case 0:
$duiying=1;
break;
case 1:
$duiying=0;
break;
case 2:
$duiying=X;
break;
case 3:
$duiying=9;
break;
case 4:
$duiying=8;
break;
case 5:
$duiying=7;
break;
case 6:
$duiying=6;
break;
case 7:
$duiying=5;
break;
case 8:
$duiying=4;
break;
case 9:
$duiying=3;
break;
case 10:
$duiying=2;
break;
}
//获取身份证最后一位数
$last_num = substr($this->numCard,17,1);

//判断用户输入的身份证最后一位数与前17位数转换得到校验位是否相等
if($duiying==$last_num) {
$alert= "<script>alert('此身份证有效合法!');</script>";
} else {
$alert= "<script>alert('此身份证不合法');</script>";
}
return $alert;
}//End toString
}//End class
?>


IdentifyCard.php

<html>
<head>
<title>检验身份证</title>
</head>
<body>
<form method="POST">
<input type="text" name="IdentifyCard" id="IdentifyCard" size="18"
value="<?php echo $_POST['IdentifyCard'];?>" maxlength="18" required
placeholder="请输入您的身份证!" /><br />
<input type="submit" id="Submit" name="Submit" value="检验" />
<?php
include "cal.class.php";
echo new Identify();
?>
</form>
</body>
</html>


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

新手帖,混脸熟。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: