php实现身份证号码获取归属地地址的实例
什么是接口(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实现身份证号码获取归属地地址的实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西威变频器使用说明书_西威变频器说明书
- 下一篇: 兰光bl2000_蓝光BL2000情况处