用淘宝IP库获取客户ip各种信息

首先来上个淘宝ip库的地址:
http://ip.taobao.com/
访问限制
为了保障服务正常运行,每个用户的访问频率需小于10qps。
接口说明
1. 请求接口(GET):
/service/getIpInfo.php?ip=[ip地址字串]
2. 响应信息:
(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商
3. 返回数据格式:
{“code”:0,”data”:{“ip”:”210.75.225.254″,”country”:”\u4e2d\u56fd”,”area”:”\u534e\u5317″,
“region”:”\u5317\u4eac\u5e02″,”city”:”\u5317\u4eac\u5e02″,”county”:””,”isp”:”\u7535\u4fe1″,
“country_id”:”86″,”area_id”:”100000″,”region_id”:”110000″,”city_id”:”110000″,
“county_id”:”-1″,”isp_id”:”100017″}}
其中code的值的含义为,0:成功,1:失败。

好了,接下来就进入实例应用吧。
由于这次我只需要用到显示ip的省市和运营商,所以就按照我使用的举例吧

1
2
3
4
5
6
7
8
9
10
11
12
13
 
function getipinfo($ip)
{
$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
$ipinfo=json_decode(file_get_contents($url));
if($ipinfo->code=='1'){
return false;
}
$city = $ipinfo->data->region.$ipinfo->data->city;
$isp = $ipinfo->data->isp;
return $city.$isp;
}
echo getipinfo(你获取的ip)."<br>";

结合上面的代码和接口说明,不难看出
返回的信息都是在

1
 $xxx = $ipinfo->data->xxx;

里面定义的。xxx就是你需要的信息,返回数据格式里的各个字段。
最后用return显示出来。

完整的实例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
header("Content-Type:text/html;charset=utf-8");  
//获取用户ip
if(getenv('HTTP_CLIENT_IP')) { 
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) { 
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) { 
$onlineip = getenv('REMOTE_ADDR');
} else { 
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
//获取ip信息
function getipinfo($ip)
{
$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
$ipinfo=json_decode(file_get_contents($url));
if($ipinfo->code=='1'){
return false;
}
$city = $ipinfo->data->region.$ipinfo->data->city;
$isp = $ipinfo->data->isp;
return $city.$isp;
}
//显示用户ip
echo $onlineip."<br>";
//显示ip信息
echo getipinfo($onlineip)."<br>";
?>

添加评论