开发者俱乐部
标题:
PHP利用新浪和百度ip库API获取IP地址所在的地理位置
[打印本页]
作者:
true
时间:
2016-4-30 23:33
标题:
PHP利用新浪和百度ip库API获取IP地址所在的地理位置
推荐下面两个接口,写的两个小函数推荐下面两个接口,写的两个小函数
新浪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;}
欢迎光临 开发者俱乐部 (http://xodn.com/)
Powered by Discuz! X3.2