开发者俱乐部

标题: 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