首页 > PHP资讯 > PHP培训技术 > php 获取客户端IP真实地址和归属地

php 获取客户端IP真实地址和归属地

PHP培训技术

  //代码如下:

<?php  
/*获取客户端真实的IP*/
    function GetIps(){          
        $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;      }        
/*把IP传入新浪API返回数据获取ip的真实归属地*/
    function GetIpFrom($ip = ''){          
    if(empty($ip)){              
        $ip = GetIps();          
    }          
    $res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='.$ip); 
               
    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;         
       }          
       $address[0] = $json['country'].$json['province'].$json['city']
       .$json['district'].$json['isp'].$json['type'].$json['desc'];        
       $address[1] = $json['ip'];                
       return $address;    
     }

  //返回客户端的ip地址和归属地信息。

  上面代码用的是新浪API。

(http://www.thinksite.cn/index.php?m=content&c=index&a=lists&catid=16)

本文由欣才IT学院整理发布,未经许可,禁止转载。