实名认证牵涉公安备案系统,需想公安机关申请接口进行验证。当然,调用其他已向公安机关申请了接口的第三方接口一样可行。否则,只能用身份证生成规则进行验证,不完全正确,身份证号和姓名也不匹配。如下:

/*/
# CopyRight: zxing
# Document: 检查符合 GB11643-1999 标准的身份证号码的正确性
# File:gb11643_1999.func.php Fri Mar 28 09:42:41 CST 2008 zxing
# Updated:Fri Mar 28 09:42:41 CST 2008
# Note: 调用函数 check_id();
#/*///
$id =array();
$id[] = '370882198601064774';
$id[] = '420502198611281126';
$id[] = '370882198601064770';
$id[] = '370882860106477';
$id[] = '63212519850703214x';
$id[] = '429021198203221006';
$id[] = '429036198203211023';
foreach ($id as $key => $value){
echo check_id($value)?$value.' 是真的!': $value.' 是假的!';
}
#/*/
/*/
# 函数功能:计算身份证号码中的检校码
# 函数名称:idcard_verify_number
# 参数表 :string $idcard_base 身份证号码的前十七位
# 返回值 :string 检校码
# 更新时间:Fri Mar 28 09:50:19 CST 2008
/*/
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); //debug 加权因子$verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); //debug 校验码对应值$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位
# 函数名称:idcard_15to18
# 参数表 :string $idcard 十五位身份证号码
# 返回值 :string
# 更新时间:Fri Mar 28 09:49:13 CST 2008
/*/
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位身份证校验码有效性检查
# 函数名称:idcard_checksum18
# 参数表 :string $idcard 十八位身份证号码
# 返回值 :bool
# 更新时间:Fri Mar 28 09:48:36 CST 2008
/*/
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;}
}
/*/
# 函数功能:身份证号码检查接口函数
# 函数名称:check_id
# 参数表 :string $idcard 身份证号码
# 返回值 :bool 是否正确
# 更新时间:Fri Mar 28 09:47:43 CST 2008
/*/
function check_id($idcard) {
if(strlen($idcard) == 15 || strlen($idcard) == 18){if(strlen($idcard) == 15){$idcard = idcard_15to18($idcard);}if(idcard_checksum18($idcard)){return true;}else{return false;}
}else{return false;
}
}

网上很多关于实名认证的参考文章,多数用的是聚合数据的认证接口:https://www.juhe.cn/docs/api/id/103

参考文章:https://blog.csdn.net/maxianshi/article/details/80127610

而我今天要介绍的是阿里云的实名认证接口调用,优势在于:简单、快捷、实惠:

接口申请地址:https://market.aliyun.com/products/56928004/cmapi014760.html?spm=5176.730005.0.0.aeWVBT

调用地址:http://idcard.market.alicloudapi.com/lianzhuo/idcard

请求方式:GET

返回类型:JSON

请求参数:

名称 类型 是否必须 描述
cardno STRING 必选 身份证号码
name STRING 必选 姓名

请求示例:

<?php$host = "http://idcard.market.alicloudapi.com";$path = "/lianzhuo/idcard";$method = "GET";$appcode = "你自己的AppCode";    //支付成功之后点击跳转至阿里云管控中心,可看到AppCode,如下图$headers = array();array_push($headers, "Authorization:APPCODE " . $appcode);$querys = "cardno=370703198111300338&name=%E9%83%AD%E5%BE%B7%E6%98%8C";$bodys = "";$url = $host . $path . "?" . $querys;$curl = curl_init();curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);    //此处设置返回头信息curl_setopt($curl, CURLOPT_HEADER, false);    //是否显示头信息,false为不显示if (1 == strpos("$".$host, "https://")){curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);}$response = curl_exec( $curl );
  var_dump(curl_exec($curl));curl_close( $curl );$result_json = json_decode($response,true);
?>

返回示例:

{"resp": {"code": 0,"desc": "匹配"},"data": {"sex": "男","address": "广东省清远市清新县","birthday": "1989-05-25"}
}

PHP 实现身份证号实名认证功能相关推荐

  1. 【Excel VBA】身份证号校验功能函数

    纲举目张 说明 代码code 使用方法 说明 在处理工作数据时经常会有身份证号,而身份证号作为唯一能够精确标记某个人的关键数据,所以身份证号的正确与否就非常关键,而一般身份证号都是手工录入为主,大多数 ...

  2. 汇编课设:实现身份证号验证功能并输出上面所给的信息

    1.原题再现: 输入一个学生的身份证号码,程序检验身份证号码是否合法.并显示省份.年龄.性别等信息. 下面是身份证号码的规则: 身份证号码共18位.前6位是地址码,7–14位是出生年月日,后面4位是生 ...

  3. 上传身份证照片获取姓名和身份证号

    在项目中做了一个上传身份证正面 之后可以默认填写 姓名和身份证号的功能 来分享一下 1.用到的接口  http://api2.juheapi.com/cardrecon/upload 2.废话就不说了 ...

  4. 要求: 编写一个程序,提示用户输入: 姓名 ,身份证号(需要一次输完,中间用逗号分隔)随后打印用户的星座。 提示:输入功能用C实现会很简单,其他语言的话,就不用输入姓名和逗号了,直接输入身份证号就

    #include <stdio.h>int main(void) {char name[10]; //存储姓名int a, b; //a代表月,b代表日printf("请输入姓名 ...

  5. 从身份证号字符串中提取出生年月,小功能,在研办值班的时候用到的

    前提提要 所有的身份证号都放在一个txt文件中了 '''从身份证号字符串中提取出生年月''' result =[] with open("test.txt", "r&qu ...

  6. 身份证号查询归属地的实际应用场景

    身份证号查询归属地是一种常见的信息安全服务.它以号段为基础,可以根据输入的身份证号来查询出归属地信息.该功能目前在很多领域中应用,在客汇宝APP上就可以利用身份证号码查询到归属地. 下面我们就来介绍下 ...

  7. 身份证的那些事——再也不用查询软件了直接看懂身份证号

    身份证的那些事--再也不用查询软件了直接看懂身份证号 才知道,身份证后4位原来是这个意思,涨知识了,好多人还不知道 一 与我们生活息息相关的证件 不知道大家有没有发现,近距离的出门,大家喜欢轻装上阵, ...

  8. poi设置单元格格式为文本_身份证号乱码?日期显示不对?都是单元格格式的锅...

    私信回复关键词[福利],获取丰富办公资源,助你高效办公早下班! 大家好,我是秋小 E~这里是秋叶 Excel 的[问答精华]专栏! 问题主要来自秋叶 Excel 学习班的同学,回答由讲师.助教共同完成 ...

  9. c#事件的发布-订阅模型_微信灰度测试订阅号付费功能,小米推出最便宜5G套餐,腾讯辟谣高管猝死赔钱事件,核心期刊发布十岁儿童文章,这就是今天的其他大新闻!...

    今天是1月15日 农历十二月廿一 杭州又开始下雨了 今天中午出个门 我们这乡下 打车排队能排到十几个 ... 下面是今天的其他大新闻 # 微信宣布:正灰度测试订阅号付费功能 ( IT之家 ) 1月15 ...

  10. python身份证号掩盖出生日期的代码_利用Python制作全国身份证号验证及查询系统!就问你吊不吊!...

    大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...

最新文章

  1. NSTimer用法,暂停,继续,初始化
  2. http 的一生: 一、特点与 URL解析
  3. 人脸检测 RetinaFace
  4. 关闭Eclipse的控制台console自动跳出
  5. 算法图解学习笔记01:二分查找大O表示法
  6. Java IdentityHashMap keySet()方法及示例
  7. linux 卸载skype,如何将Skype与Ubuntu Unity集成 | MOS86
  8. SAP License:物料账差异
  9. windows对应字体
  10. Word VBA-标题设置
  11. 有序回归: Ordinal Regression的理解
  12. ROS讲座 关于ROS2和Gazebo C++ in Open Source Robotics
  13. SAP ABAP BDC调用
  14. 【JDK下载与安装教程】
  15. 随机产生长度不少于6位密码
  16. 美国NBC电视台社论 中文版
  17. python 网络爬虫
  18. 数据结构查找-7-7 词典 (15 分)
  19. SQL Server 数据库设计规范
  20. Spark Parquet使用

热门文章

  1. 《浦岛太郎》——太宰治
  2. 机器学习——共享单车数据集预测
  3. 技术文档的版本说明格式
  4. 如何提高阅读源代码能力
  5. php判断号码归属,php手机号码归属地查询
  6. Unity制作UFO小游戏
  7. 幕布图像大小与投影仪亮度关系对应表,--怎样选投影机和银幕不用愁了
  8. GPRS 区分2g/3g/4g网络
  9. 华为交换机console口密码配置
  10. python问题——ValueError: only 2 non-keyword arguments accepted