程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> [1]IP地址查詢,ip地址查詢

[1]IP地址查詢,ip地址查詢

編輯:關於PHP編程

[1]IP地址查詢,ip地址查詢


今天起開始玩百度APIStore裡面的免費API。以前用過的有12306的:數據、接口,有時間整理出來,12306的有點亂就是了。還有扇貝以及有道的API,之前用在留言板裡自動翻譯,公司用過百度地圖以及百科的,百科的純用file_get_contents然後preg_match_all去獲取,類似的還做過新聞采集,真是心累,還沒用過cURL。

名稱:IP地址查詢

效果:

代碼沒啥看的,都是百度的示例代碼。

 1     
2 if(!isset($_POST['ip'])) 3 exit; 4 $ip=trim($_POST['ip']); 5 $ch = curl_init(); 6 $url = 'http://apis.baidu.com/apistore/iplookupservice/iplookup?ip='.$ip; 7 $header = array( 8 'apikey:百度API密鑰', 9 ); 10 // 添加apikey到header 11 curl_setopt($ch, CURLOPT_HTTPHEADER , $header); 12 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 13 // 執行HTTP請求 14 curl_setopt($ch , CURLOPT_URL , $url); 15 $res = curl_exec($ch); 16 curl_close($ch); 17 $data=json_decode($res,true); 18 19 $str="<span style='color:#26B198'>"; 20 if($data['errNum']==0 && !empty($data['retData']['country'])){ 21 $str.="{$data['retData']['country']}.{$data['retData']['province']}.{$data['retData']['city']}.{$data['retData']['district']},{$data['retData']['carrier']}"; 22 } 23 $str.="</span>"; 24 echo $str;

json_decode()的第二個參數為true代表返回數組,比較好使用數據。

其中,IP不輸入的話,為自己的IP,搜索網上的真實IP也用的不理想,還在本地就更亂了。所以獲取IP用的站長之家的數據,不嚴謹。

     //從站長之家獲取ip地址
     $ipc=curl_init(); curl_setopt($ipc,CURLOPT_RETURNTRANSFER,1); curl_setopt($ipc,CURLOPT_URL,"http://ip.chinaz.com/"); $ipk=curl_exec($ipc); curl_close($ipc); preg_match('/<dd class="fz24">(.*?)<\/dd>/is', $ipk, $ip); if(preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip[1])) { $ip=$ip[1]; }else{ $ip=''; }

直接去類名為fz24的div裡取的(類似還可以在站長之家取到地址分辨率操作系統等等,但終究不是長久之計),出來再判斷是不是ip格式,最後的$ip如果有的話就是本機IP。

搜到IP地址查詢可以使用新浪、淘寶和百度三家的接口:

1.新浪:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=***.**.**.*  //js是js格式,可改為json
2.淘寶:http://ip.taobao.com/instructions.php //這鏈接是介紹,接口在http://ip.taobao.com/service/getIpInfo.php?ip=***.**.***.**
3.百度:http://api.map.baidu.com/lbsapi/cloud/ip-location-api.htm

用自己IP測試的效果如下:分別是百度,淘寶,新浪:

可以看出來百度確定到區縣了,淘寶沒獲取到但淘寶信息明顯比較多郵編/行政區碼都有,新浪有點不足了。

IP地址可以還干啥,通過百度地圖API獲取坐標,+增加坐標:

//百度地圖通過IP獲取坐標
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"http://api.map.baidu.com/location/ip?ak=百度開發者密鑰&ip=$ip");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $res=curl_exec($ch);
    $data=json_decode($res,true);
    if($data['status']===0){
        if(isset($data['content']['point']['x']) && isset($data['content']['point']['y']))
            $str.='&nbsp;&nbsp;['.$data['content']['point']['x'].','.$data['content']['point']['y'].']';
    }
    curl_close($ch);
    $str.="</span>";
    echo $str;

這種坐標精度不高,就這樣只到市,最終效果:

注:API密鑰和AK密鑰不是一個東西,API密鑰是百度APIStroe的密鑰,AK密鑰屬於百度地圖開發密鑰。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved