侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

php通过淘宝API查询IP地址归属等信息

php  /  管理员 发布于 7年前   393

淘宝公司提供了一个很好用的IP地理信息查询接口。

在这里:http://ip.taobao.com/

TaobaoIPQuery2这个类将极大的简化相关的信息查询。

类 TaobaoIPQuery2 文件:

$ip));    $ch = curl_init();    $options = array(      CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query),      CURLOPT_RETURNTRANSFER => true,      CURLOPT_AUTOREFERER => false,      CURLOPT_FOLLOWLOCATION => false,      CURLOPT_HEADER => false,      CURLOPT_TIMEOUT => 3.0,    );    curl_setopt_array($ch, $options);    $content = curl_exec($ch);    curl_close($ch);    return $content;  }    private static function parseJSON($json){    $O = json_decode ($json, true);    if(false === is_null($O)){      return $O;    }    if (version_compare(PHP_VERSION, '5.3.0', '>=')) {      $errorCode = json_last_error();      if(isset(self::$_JSONParseError[$errorCode])){        throw new Exception(self::$_JSONParseError[$errorCode], 5);      }    }    throw new Exception('JSON parse error', 5);  }    private static $_JSONParseError = array(    JSON_ERROR_NONE=>'No error has occurred',      JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded',      JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded',      JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON',      JSON_ERROR_SYNTAX=>'Syntax error',      JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded',  );}

TaobaoIPQuery2.Class.php:

$ip));    $ch = curl_init();    $options = array(      CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query),      CURLOPT_RETURNTRANSFER => true,      CURLOPT_AUTOREFERER => false,      CURLOPT_FOLLOWLOCATION => false,      CURLOPT_HEADER => false,      CURLOPT_TIMEOUT => 3.0,    );    curl_setopt_array($ch, $options);    $content = curl_exec($ch);    curl_close($ch);    return $content;  }    private static function parseJSON($json){    $O = json_decode ($json, true);    if(false === is_null($O)){      return $O;    }    if (version_compare(PHP_VERSION, '5.3.0', '>=')) {      $errorCode = json_last_error();      if(isset(self::$_JSONParseError[$errorCode])){        throw new Exception(self::$_JSONParseError[$errorCode], 5);      }    }    throw new Exception('JSON parse error', 5);  }  private static $_JSONParseError = array(    JSON_ERROR_NONE=>'No error has occurred',      JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded',      JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded',      JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON',      JSON_ERROR_SYNTAX=>'Syntax error',      JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded',  );}

调用:

$ip = $_SERVER["REMOTE_ADDR"];$ipquery = new taobaoIPQuery($ip);$region = $ipquery->get_region();$country = $ipquery->get_country();$city = $ipquery->get_city();

我们再来看个腾讯api接口的

/*  *根据腾讯IP分享计划的地址获取IP所在地,比较精确  */ function getIPLoc_QQ($queryIP){   $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$queryIP;   $ch = curl_init($url);   curl_setopt($ch,CURLOPT_ENCODING ,'gb2312');   curl_setopt($ch, CURLOPT_TIMEOUT, 10);   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回   $result = curl_exec($ch);   $result = mb_convert_encoding($result, "utf-8", "gb2312"); // 编码转换,否则乱码   curl_close($ch);   preg_match("@(.*)

@iU",$result,$ipArray); $loc = $ipArray[1]; return $loc; }

腾讯的IP分享计划的查询接口连接是:http://ip.qq.com/cgi-bin/searchip,该连接后面会带有一个get参数searchip1,即searchip1=你要查询的IP地址。采用PHP向http://ip.qq.com/cgi-bin/searchip发送http get request,然后获取相应,获得相应结果后,将结果用正则表达式将需要的地理位置信息提取出来就OK了。当然,PHP发送get请求的方法有很多,我用curl来模拟http请求的方法

Curl是PHP的一个扩展,进行测试之前,先确认PHP已经加载了curl扩展。打开PHP配置文件php.ini,搜索 “extension=php_curl.dll”,将其前面的分号(;)去掉,然后重启HTTP服务器,查看phpinfo(),若能看到curl的信 息,说明PHP扩展curl成功

接下来是新浪网的API接口

新浪的IP查询接口地址是:http://int.dpool.sina.com.cn/iplookup/iplookup.php,该连接后面也带有get参数,参数ip=你要查询的IP地址,format=返回的查询结果格式。为了方便起见,返回的格式采用json,即format=json,因此,PHP出来扩展curl外,还得扩展json:

/*  *根据新浪IP查询接口获取IP所在地  */ function getIPLoc_sina($queryIP){   $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP;   $ch = curl_init($url);   //curl_setopt($ch,CURLOPT_ENCODING ,'utf8');   curl_setopt($ch, CURLOPT_TIMEOUT, 10);   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回   $location = curl_exec($ch);   $location = json_decode($location);   curl_close($ch);      $loc = "";   if($location===FALSE) return "";   if (emptyempty($location->desc)) {     $loc = $location->province.$location->city.$location->district.$location->isp;   }else{     $loc = $location->desc;   }   return $loc; } 

使用getIPLoc_sina("183.37.209.57")即可得到IP地址所在的地址位置。

您可能感兴趣的文章:

  • java使用淘宝API读写json实现手机归属地查询功能代码
  • jquery使用淘宝接口跨域查询手机号码归属地实例
  • java调用淘宝api联网查询ip归属地
  • 免费手机号码归属地API查询接口和PHP使用实例分享
  • PHP通过API获取手机号码归属地
  • Android编程实现号码归属地查询的方法
  • 基于C#实现手机号码归属地接口调用
  • Android手机号码归属地的查询


  • 上一条:
    PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
    下一条:
    通过PHP自带的服务器来查看正则匹配结果的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客