什么是接口(interface) ?

接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。 
(1)接口是一个行为的规范、协议。其实就是类和类之间的一种协定,一种约束
(2)C#不支持多继承,但是他把这个功能交给接口来实现。 
(3)类与类之间的系统资源调用方式不一样,导致他们之间的通信很困难,而接口可以屏蔽掉它们之间的差异,能使他们顺利通信。

https://www.nowapi.com/api/idcard.get 在连接中寻找身份证号码归属地查询接口

身份证查询接口:
返回XML数据:http://www.youdao.com/smartresult-xml/search.s?type=id&q=身份证号
返回JSON数据:http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=id&q=身份证号

用PhpStorm(本人PhpStorm版本2019版可能会有些不一样)搭建 laravel框架

数据库内容

先写一个表单以供查询和结果

<center>身份证号:<input type="text" id="tel"><button id="sub">查询</button>
<table border="1"><tr><th>身份证号</th><th>归属地</th><th>区号</th><th>数据来源</th></tr><tr class="tr"><td></td><td></td><td></td><td></td></tr>
</table>
</center>

通过前端的ajax或者异步请求实现

传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。AJAX应用可以仅向服务器发送并取回必需的数据。

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>//搜索$('#sub').click(function (){//获取身份证号var tel = $('#tel').val();$.ajax({url:'telTo',data:{tel:tel},type:'get',dataType:'json',success:function (res){if(res.code==200){$('table').show();$('.tr>td:eq(0)').text(res.data.idcard);$('.tr>td:eq(1)').text(res.data.att);$('.tr>td:eq(2)').text(res.data.areano);$('.tr>td:eq(3)').text(res.msg);console.log(res);}}})})
</script>

在路由传递

Route::get('tel','NumController@tel');
Route::get('telto','NumController@telto');


控制器中先调用接口正常,能够查询到身份证的信息

接口定义了实现某种服务的一般规范,声明了所需的函数和常量,但不指定如何实现。之所以不给出实现的细节,是因为不同的实体可能需要用不同的方式来实现公共的方法定义。关键是要建立必须实现的一组一般原则,只有满足了这些原则才能说实现了这个接口。

接口中不定义类成员!类成员的定义完全交给实现类来完成。

获得接口返回JSON数据

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use PDO;
use Illuminate\Http\Request;
class NumController extends Controller
{/*** 接口获取信息* @param $aparm* @return false|mixed*/function nowapi_call($a_parm){if(!is_array($a_parm)){return false;}//combinations$a_parm['format']=empty($a_parm['format'])?'json':$a_parm['format'];$apiurl=empty($a_parm['apiurl'])?'http://api.k780.com/?':$a_parm['apiurl'].'/?';unset($a_parm['apiurl']);foreach($a_parm as $k=>$v){$apiurl.=$k.'='.$v.'&';}$apiurl=substr($apiurl,0,-1);if(!$callapi=file_get_contents($apiurl)){return false;}//formatif($a_parm['format']=='base64'){$a_cdata=unserialize(base64_decode($callapi));}elseif($a_parm['format']=='json'){if(!$a_cdata=json_decode($callapi,true)){return false;}}else{return false;}//arrayif($a_cdata['success']!='1'){echo $a_cdata['msgid'].' '.$a_cdata['msg'];return false;}return $a_cdata['result'];}}

跳转至查询页面

/*** 跳转查询页面* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View*/public function Tel(){return view('tel');}


传值查询获取身份证号用PDO奇数存入

数据库、需要生成静态页面

通过第三方API接口

PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。

PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。

一般在页面中传值常见的是POST、GET和COOKIE几种,所以下面我也主要介绍这几种。PHP4以后都采用的是$_POST、$_GET等数组来获取网页传值。

具体代码如下

/*** 传值查询* @param Request $request*/function telTo(Request $request){//获取身份证号$idcard = $request->get('tel');//命名文件$fiel = $idcard.'.html';//第三次查询,是否存在静态页面if(file_exists($fiel)){$data=file_get_contents($fiel);return ['code'=>200,'msg'=>'纯静态页面读取','data'=>json_decode($data)];}//第二次查询//查询数据库是否存在$data = DB::table('idcard')->where('idcard',$idcard)->first();if($data){$res=['code'=>200,'msg'=>'数据库读取','data'=>$data];//存入静态模式file_put_contents($fiel,json_encode($data));//返回json模式return json_encode($res);}//改变信息接口查询$nowapi_parm['app']='idcard.get';$nowapi_parm['idcard']=$idcard;$nowapi_parm['appkey']='60735';$nowapi_parm['sign']='7a992e81919e0a72231d0bb9ecf849d9';$nowapi_parm['format']='json';$result=$this->nowapi_call($nowapi_parm);
//        dd($result);//转化查询数据$sql = "'".implode("','",$result)."'";//引入PDO向数据库插入数据$pdo = new PDO('mysql:host=127.0.0.1;dbname=test;',"root","root");$pdo->exec("insert into idcard value (null,$sql)");//返回接口查询数据 :第一次查询return ['code'=>200,'msg'=>'接口调用','data'=>$result];}

这样就完成php实现查询身份证号的归属地查询。

php实现身份证号码获取归属地地址的实例相关推荐

  1. php实现身份证号码获取归属地地址的实列教程,含完整全国地区归属数据!

    本篇文章主要讲解实现,php通过读取身份证地理位置编码进行匹配归属地的功能实例. 日期:2021-7-10 作者:任聪聪 实列文件截图: 说明:我将数据切分成了两种类型,依据自己的习惯进行导入数据库即 ...

  2. 转java通过身份证号码获取出生日期、性别、年龄

    转自:https://blog.csdn.net/u011199063/article/details/79564587 身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1 ...

  3. java通过身份证号码获取出生日期、性别、年龄

    身份证号码: 15位:6位地址码+6位出生年月日(900101代表1990年1月1日出生)+3位顺序码 18位:6位地址码+8位出生年月日(19900101代表1990年1月1日出生)+3位顺序码+1 ...

  4. PHP根据身份证号码获取户口所在地

    最近需要人员信息的户口所在地还必须保持一致,但是之前没有让用户输入因此根据网上的一些方法自己整理了一个方法分享给大家: /** 根据身份证号码获取出身地址* author:阿剂* @param str ...

  5. C# 根据身份证号码获取人员性别和出生年月

    C# 根据身份证号码获取人员性别和出生年月 //处理18位的身份证号码从号码中得到生日和性别代码if (identityCard.Length == 18){birthday = identityCa ...

  6. JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别

    目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...

  7. 通过身份证号码获取出生日期、性别、年龄

    /*** 通过身份证号码获取出生日期.性别.年龄** @param certificateNo* @return 返回的出生日期格式:1990-01-01 性别格式:F-女,M-男*/public s ...

  8. php 身份证号码获取星座和生肖

    本文介绍下,php用身份证号码获取星座和生肖的方法,一个简单的php实例,从身份证号码中取得星座与生肖信息,有兴趣的朋友参考研究下吧.本文转自: http://www.jbxue.com/articl ...

  9. 身份证、护照验证 身份证号码获取生日、性别信息

    2019独角兽企业重金招聘Python工程师标准>>> 功能描述 录入一些客户的信息,证件验证,例如身份证.护照验证等.身份证号码验证正确以后,手动录入后实现能自动显示生日.性别 信 ...

  10. SQL 根据身份证号码获取年龄的函数

    在数据库的运用过程中,我们时常会碰到根据身份证号码来获取当前的年龄,今天我在这里写了一个函数,就是关于获取年龄的 create or replace function FUNC_COMPARE_SFZ ...

最新文章

  1. 构建虚拟工控环境系列 - 西门子虚拟PLC
  2. 【专访】KDD2018主席熊辉教授:数据挖掘与深度学习结合新趋势
  3. wxWidgets:wxColourPickerEvent类用法
  4. boost::metaparse::v1::impl::empty_string相关用法的测试程序
  5. Libcurl安装与HelloWorld
  6. (vue基础试炼_08)Vue模板语法
  7. C Looooops POJ - 2115 (exgcd)
  8. 多学习,C++值得看的书籍
  9. uml 9图不同的角度品种分类
  10. dispatch js实现_js实现对象自定义事件,触发,on监听事件的方式
  11. python标准正态分布表(scipy.stats)
  12. python 螺旋_用Python生成气候温度螺旋
  13. 9个关键词,2万字漫谈元宇宙
  14. 物联网无线通信技术 低功耗WiFi模块 WiFi芯片技术应用
  15. 利用神经网络预测股票价格走势
  16. linux 信号sigabrt,關於Linux中的SIGABRT信號
  17. 如何用excel求平均数?认准average()——搜索函数时千万别输mean,否则会得到geomean()
  18. Python 画樱花树(樱花树下的约定)
  19. 【LeetCode】灯泡开关Ⅰ~ Ⅳ(你还是把我关了吧)
  20. Unity中的数学基础——弧度与角度

热门文章

  1. 怎样用python爬虫付费文档_python爬文档
  2. openwrt 需要高级浏览器_树莓派 + OpenWrt 实现 BT 下载机
  3. Octave与MATLAB
  4. Maven的下载安装配置教程(详细图文)
  5. Java中的输入、输出流
  6. windows下编译librtmp库
  7. 中文版Latex常用语法大全教程
  8. linux下可执行文件无法执行问题定位排查
  9. turn.js (翻页效果)总结
  10. 《Linux操作系统-系统移植》第4章 内核移植(IMX283+Linux3.14)