php查询IP地址归属等信息

淘宝公司提供了一个很好用的IP地理信息查询接口。在这里:http://ip.taobao.com/TaobaoIPQuery2这个类将极大的简化相关的信息查询。类TaobaoIPQuery2文件:

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

淘宝公司提供了一个很好用的IP地理信息查询接口。
在这里:http://ip.taobao.com/
TaobaoIPQuery2这个类将极大的简化相关的信息查询。

 

类 TaobaoIPQuery2 文件:

 1 <?php
 2 /* Usage:
 3  * $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress');
 4 
 5 http://www.cnblogs.com/roucheng/
 6  */
 7 Class TaobaoIPQuery2{
 8     private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php';
 9     public static function getIPInfo($ip){
10         $long = ip2long($ip);
11         if($long === 0){
12             throw new Exception('IP address error', 5);
13         }
14         $ip=long2ip($long);
15         $IPInfo = self::queryIPInfo($ip);
16         return self::parseJSON($IPInfo);
17     }
18     
19     private static function queryIPInfo($ip){
20         $query = http_build_query(array('ip'=>$ip));
21         $ch = curl_init();
22         $options = array(
23             CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query),
24             CURLOPT_RETURNTRANSFER => true,
25             CURLOPT_AUTOREFERER => false,
26             CURLOPT_FOLLOWLOCATION => false,
27             CURLOPT_HEADER => false,
28             CURLOPT_TIMEOUT => 3.0,
29         );
30         curl_setopt_array($ch, $options);
31         $content = curl_exec($ch);
32         curl_close($ch);
33         return $content;
34     }
35     
36     private static function parseJSON($json){
37         $O = json_decode ($json, true);
38         if(false === is_null($O)){
39             return $O;
40         }
41         if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
42             $errorCode = json_last_error();
43             if(isset(self::$_JSONParseError[$errorCode])){
44                 throw new Exception(self::$_JSONParseError[$errorCode], 5);
45             }
46         }
47         throw new Exception('JSON parse error', 5);
48     }
49     
50     private static $_JSONParseError = array(
51         JSON_ERROR_NONE=>'No error has occurred',   
52         JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded',   
53         JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded',   
54         JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON',   
55         JSON_ERROR_SYNTAX=>'Syntax error',   
56         JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded',
57     );
58 }

 

TaobaoIPQuery2.Class.php:

 1 <?php
 2 Class TaobaoIPQuery2{
 3     private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php';
 4     public static function getIPInfo($ip){
 5         $long = ip2long($ip);
 6         if($long === 0){
 7             throw new Exception('IP address error', 5);
 8         }
 9         $ip=long2ip($long);
10         $IPInfo = self::queryIPInfo($ip);
11         return self::parseJSON($IPInfo);
12     }
13     
14     private static function queryIPInfo($ip){
15         $query = http_build_query(array('ip'=>$ip));
16         $ch = curl_init();
17         $options = array(
18             CURLOPT_URL => sprintf('%s?%s', self::$_requestURL, $query),
19             CURLOPT_RETURNTRANSFER => true,
20             CURLOPT_AUTOREFERER => false,
21             CURLOPT_FOLLOWLOCATION => false,
22             CURLOPT_HEADER => false,
23             CURLOPT_TIMEOUT => 3.0,
24         );
25         curl_setopt_array($ch, $options);
26         $content = curl_exec($ch);
27         curl_close($ch);
28         return $content;
29     }
30     
31     private static function parseJSON($json){
32         $O = json_decode ($json, true);
33         if(false === is_null($O)){
34             return $O;
35         }
36         if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
37             $errorCode = json_last_error();
38             if(isset(self::$_JSONParseError[$errorCode])){
39                 throw new Exception(self::$_JSONParseError[$errorCode], 5);
40             }
41         }
42         throw new Exception('JSON parse error', 5);
43     }
44     /* http://www.cnblogs.com/roucheng/ */
45     private static $_JSONParseError = array(
46         JSON_ERROR_NONE=>'No error has occurred',   
47         JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded',   
48         JSON_ERROR_CTRL_CHAR=>'Control character error, possibly incorrectly encoded',   
49         JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON',   
50         JSON_ERROR_SYNTAX=>'Syntax error',   
51         JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded',
52     );
53 }

 

调用:

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

 

 

另外新浪也提供接口:http://ipapi.sinaapp.com/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120737.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql截取前几个字符串_mysql 截取字符串 函数[通俗易懂]

    mysql截取前几个字符串_mysql 截取字符串 函数[通俗易懂]文章摘取自http://www.cnblogs.com/zdz8207/p/3765073.html练习截取字符串函数(五个)mysql索引从1开始一、mysql截取字符串函数1、left(str,index)从左边第index开始截取2、right(str,index)从右边第index开始截取3、substring(str,index)当index>0从左边开始截取直到结束当ind…

    2022年6月9日
  • 怎样快速在线将pdf文件转换成word

    怎样快速在线将pdf文件转换成word免费pdf转word在线转换器在办公环境下如何将PDF转换成Word,是不少上班族普遍需要了解的问题之一。面对上百份需要处理的文档,其实否不用安装专业的PDF转Word转换器,借助免费PDF转Word在线转换器就能轻松帮你搞定PDF转Word问题。pdf在线转换成wordhttp://app.xunjiepdf.com   pdf word在线转换器最新发布的迅捷免费pdf转word

    2022年6月4日
  • 大数据资产管理实战

    大数据资产管理实战各位好,今天和大家分享“大数据资产管理实战”这个课题。本次分享包括大数据资产管理的概述、方法论和实施效果三个部分的内容。第一部分:大数据资产管理概述提到企业数字化转型,不得不提现在的一个主流观点:未来的企业必将成为数字化企业,每个公司都将会成为软件公司!未来企业增长和竞争的能力越来越取决于其数字化创新能力。为了应对企业数字化转型,企业IT架构采用分布式、微服务、移动化、大数据等技术来应对业务变化带…

    2022年5月8日
  • 多线程学习笔记-1-进程和线程以及状态

    多线程学习笔记-1-进程和线程以及状态

    2021年6月19日
  • FindWindow使用方法

    FindWindow使用方法

    2021年12月8日
  • 数据库ER图该怎么画

    数据库ER图该怎么画什么是ER图实体关系图,通过一张ER图,能够快速的了解数据库层面的表结构设计。目前做企业级应用系统,花费了大量的时间在数据库表结构的设计上,所以打算从源头梳理一下怎么样才能画好ER图,画好图是第一步,在这个过程中怎么样做好设计,然后来保证业务系统的功能实现以及扩展性的要求。 ER图的核心要素是什么实体:客观存在并可以相互区别的事物属性:实体所具有的一个属性关系:实…

    2022年6月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号