php查询IP地址归属等信息,_PHP教程

php中文网
发布: 2016-07-12 09:02:52
原创
1226人浏览过

php查询ip地址归属等信息,

淘宝公司提供了一个很好用的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:

乾坤圈新媒体矩阵管家
乾坤圈新媒体矩阵管家

新媒体账号、门店矩阵智能管理系统

乾坤圈新媒体矩阵管家 204
查看详情 乾坤圈新媒体矩阵管家

立即学习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();
登录后复制

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1084386.htmlTechArticlephp查询IP地址归属等信息, 淘宝公司提供了一个很好用的IP地理信息查询接口。 在这里:http://ip.taobao.com/ TaobaoIPQuery2这个类将极大的简化相关...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号