您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> php >> 正文

用PHP写的身份证验证程序

作者:佚名    信息学院来源:整理    点击数:    更新时间:2008-2-2 我要参与讨论

    写了几个身份证方面的函数,个人感觉挺有用的,特别是在网络问卷调查时,对个人信息里的身份证进行验证很有用,但是应者寥寥,还是收在自己的blog里算了。

<?php
// 计算身份证校验码,根据国家标准GB 11643-1999
function idcard_verify_number($idcard_base){
 if (strlen($idcard_base) != 17){ return false; }
 // 加权因子
 $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

 // 校验码对应值
 $verify_number_list = array(’1’, ’0’, ’X’, ’9’, ’8’, ’7’, ’6’, ’5’, ’4’, ’3’, ’2’);

 $checksum = 0;
 for ($i = 0; $i < strlen($idcard_base); $i++){
  $checksum += substr($idcard_base, $i, 1) * $factor[$i];
 }

 $mod = $checksum % 11;
 $verify_number = $verify_number_list[$mod];

 return $verify_number;
}

// 将15位身份证升级到18位
function idcard_15to18($idcard){
 if (strlen($idcard) != 15){
  return false;
 }else{
  // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
  if (array_search(substr($idcard, 12, 3), array(’996’, ’997’, ’998’, ’999’)) !== false){
   $idcard = substr($idcard, 0, 6) . ’18’. substr($idcard, 6, 9);
  }else{
   $idcard = substr($idcard, 0, 6) . ’19’. substr($idcard, 6, 9);
  }
 }

 $idcard = $idcard . idcard_verify_number($idcard);

 return $idcard;
}

// 18位身份证校验码有效性检查
function idcard_checksum18($idcard){
 if (strlen($idcard) != 18){ return false; }
 $idcard_base = substr($idcard, 0, 17);
 if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
  return false;
 }else{
  return true;
 }
}
?>

在google里搜索更多用PHP写的身份证验证程序

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明