推荐下面两个接口,写的两个小函数
新浪ip库接口,经测试速度快,稳定
// 根据IP查询用户地理位置,新浪API
function getCity($ip)
{
if(!empty($ip)){
$url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip;
$ip = json_decode(file_get_contents($url));
if ((string)$ip->ret == 0) {
return false;
}
$data = array(
'country'=>$ip->country,
'region'=>$ip->province,
'city'=>$ip->city,
'isp'=>$ip->isp,
);
return $data;
}
}
淘宝ip库接口,经测试 查询速度较慢,有时候502错误 但数据准确,查询的较信息详细 应该是用的人多吧
// 根据IP查询用户地理位置,淘宝API
function getCityByTaoBao($ip)
{
$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
$ip=json_decode(file_get_contents($url));
if((string)$ip->code=='1'){
return false;
}
$data = (array)$ip->data;
return $data;
}
下面这个是经过我使用改良了的综合版
/**
* 根据IP查询用户地理位置,默认淘宝API优先级为1.
* 发现淘宝接口不稳定,则自动改为新浪接口.
* 设置了超时为5秒来解决连接超时问题.
*/
function getCityByTaoBao($ip)
{
// ip 接口
$url = "http://ip.taobao.com/service/getIpInfo.php?ip=" . $ip;
$urls = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" . $ip;
// 设置请求超时时间.
$context = stream_context_create(array('http' => array('timeout' => 5)));
if (!empty($ip = json_decode(@file_get_contents($url, 0, $context)))) {
if ((string)$ip->code == '1') {
return false;
}
$data = (array)$ip->data;
} else {
$ip = json_decode(@file_get_contents($urls));
if ((string)$ip->ret == 0) {
return false;
}
$data = array(
'country' => $ip->country,
'region' => $ip->province,
'city' => $ip->city,
'isp' => $ip->isp,
);
}
return $data;
}


