ip获取所在城市名称接口-PHP

//淘宝接口:根据ip获取所在城市名称
function  get_area( $ip  '' ){
     if ( $ip  ==  '' ){
         $ip  = GetIp();
     }
     $url  "http://ip.taobao.com/service/getIpInfo.php?ip={$ip}" ;
     $ret  = https_request( $url );
     $arr  = json_decode( $ret ,true);
     return  $arr ;
}
 
echo  "<pre>" ;
print_r(get_area( '223.67.235.28' ));
echo  "</pre>" ;

//新浪接口:根据ip获取所在城市名称
function  GetIpLookup( $ip  '' ){
     if ( empty ( $ip )){
         $ip  = GetIp();
     }
     $res  = @ file_get_contents ( 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='  $ip );//新浪的开放API
     if ( empty ( $res )){  return  false; }
     $jsonMatches  array ();
     preg_match( '#\{.+?\}#' $res $jsonMatches );
     if (!isset( $jsonMatches [0])){  return  false; }
     $json  = json_decode( $jsonMatches [0], true);
     if (isset( $json [ 'ret' ]) &&  $json [ 'ret' ] == 1){
         $json [ 'ip' ] =  $ip ;
         unset( $json [ 'ret' ]);
     } else {
         return  false;
     }
     return  $json ;
}
 
echo  '<pre>' ;
// 输出城市等信息
$ipInfos  = GetIpLookup( '123.125.114.144' );  //baidu.com IP地址
var_dump( $ipInfos );
 
// 输出本地地址
echo  GetIp();



//POST请求函数
function  https_request( $url , $data  = null){
     $curl  = curl_init();
     
     curl_setopt( $curl ,CURLOPT_URL, $url );
     curl_setopt( $curl ,CURLOPT_SSL_VERIFYPEER,false);
     curl_setopt( $curl ,CURLOPT_SSL_VERIFYHOST,false);
     
     if (! empty ( $data )){ //如果有数据传入数据
         curl_setopt( $curl ,CURLOPT_POST,1); //CURLOPT_POST 模拟post请求
         curl_setopt( $curl ,CURLOPT_POSTFIELDS, $data ); //传入数据
     }
     
     curl_setopt( $curl ,CURLOPT_RETURNTRANSFER,1);
     $output  = curl_exec( $curl );
     curl_close( $curl );
     
     return  $output ;
}
 
// 获取ip
function  GetIp(){
     $realip  '' ;
     $unknown  'unknown' ;
     if  (isset( $_SERVER )){
         if (isset( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]) && ! empty ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]) &&  strcasecmp ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ],  $unknown )){
             $arr  explode ( ',' $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]);
             foreach ( $arr  as  $ip ){
                 $ip  = trim( $ip );
                 if  ( $ip  !=  'unknown' ){
                     $realip  $ip ;
                     break ;
                 }
             }
         } else  if (isset( $_SERVER [ 'HTTP_CLIENT_IP' ]) && ! empty ( $_SERVER [ 'HTTP_CLIENT_IP' ]) &&  strcasecmp ( $_SERVER [ 'HTTP_CLIENT_IP' ],  $unknown )){
             $realip  $_SERVER [ 'HTTP_CLIENT_IP' ];
         } else  if (isset( $_SERVER [ 'REMOTE_ADDR' ]) && ! empty ( $_SERVER [ 'REMOTE_ADDR' ]) &&  strcasecmp ( $_SERVER [ 'REMOTE_ADDR' ],  $unknown )){
             $realip  $_SERVER [ 'REMOTE_ADDR' ];
         } else {
             $realip  $unknown ;
         }
     } else {
         if ( getenv ( 'HTTP_X_FORWARDED_FOR' ) &&  strcasecmp ( getenv ( 'HTTP_X_FORWARDED_FOR' ),  $unknown )){
             $realip  getenv ( "HTTP_X_FORWARDED_FOR" );
         } else  if ( getenv ( 'HTTP_CLIENT_IP' ) &&  strcasecmp ( getenv ( 'HTTP_CLIENT_IP' ),  $unknown )){
             $realip  getenv ( "HTTP_CLIENT_IP" );
         } else  if ( getenv ( 'REMOTE_ADDR' ) &&  strcasecmp ( getenv ( 'REMOTE_ADDR' ),  $unknown )){
                 $realip  getenv ( "REMOTE_ADDR" );
         } else {
             $realip  $unknown ;
         }
     }
     $realip  = preg_match( "/[\d\.]{7,15}/" $realip $matches ) ?  $matches [0] :  $unknown ;
     return  $realip ;
}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值