通过IP对接API接口返回地区信息

      发布在:后端技术      评论:0 条评论

通过IP对接API接口返回地区信息,原来的淘宝API打不开了,于是找到了http://whois.pconline.com.cn/,访问速度也不错,感谢太平洋电脑城提供的API接口。在此记录下。

function get_ip(){
//判断服务器是否允许$_SERVER
   if(isset($_SERVER)){
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
}else{
$realip = $_SERVER['REMOTE_ADDR'];
}
}else{
//不允许就使用getenv获取
       if(getenv("HTTP_X_FORWARDED_FOR")){
$realip = getenv( "HTTP_X_FORWARDED_FOR");
}elseif(getenv("HTTP_CLIENT_IP")) {
$realip = getenv("HTTP_CLIENT_IP");
}else{
$realip = getenv("REMOTE_ADDR");
}
}

return $realip;
}

function getCity(){
$ip = get_ip();
if($ip=='127.0.0.1'){
return false;
}
//初始化
   $curl = curl_init();
//设置抓取的url
   curl_setopt($curl, CURLOPT_URL, 'http://whois.pconline.com.cn/ipJson.jsp?ip='.$ip);
//设置头文件的信息作为数据流输出
   curl_setopt($curl, CURLOPT_HEADER, 0);
//设置获取的信息以文件流的形式返回,而不是直接输出。
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行命令
   curl_multi_getcontent( $curl );
$data = curl_exec($curl);
$data=mb_convert_encoding($data, "UTF-8", "GBK");
//关闭URL请求
   curl_close($curl);
//if(window.IPCallBack) {IPCallBack({"ip":"182.98.246.69","pro":"江西省","proCode":"360000","city":"赣州市","cityCode":"360700","region":"","regionCode":"0","addr":"江西省赣州市 电信","regionNames":"","err":""});}
   preg_match('#","city":"(.*?)","#i',$data,$match);

   return isset($match[1])?$match[1]:'';
}
<?php
//更简单的获取方式
$url="http://whois.pconline.com.cn/ip.jsp?ip=".'117.44.36.181';
$data=file_get_contents($url);
$data=trim(mb_convert_encoding($data, "UTF-8", "GBK"));
var_dump($data);

更多接口访问方式参考http://whois.pconline.com.cn/

相关文章
热门推荐