得到公网IP,然后得到当前地址

自己封着玩

很明显,get_onlineip()大部分情况下是得到的本地的IP,比如,127.0.0.1;在本地测试的情况下,而get_public_ip()得到的是公网的ipGetIpLookup是得到IP和地址,或者说是根据IP得到当前地址,并返回地址和IP

function get_onlineip() { //得到IP地址
    $onlineip = ''; 
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { 
    $onlineip = getenv('HTTP_CLIENT_IP'); 
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { 
    $onlineip = getenv('HTTP_X_FORWARDED_FOR'); 
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { 
    $onlineip = getenv('REMOTE_ADDR'); 
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { 
    $onlineip = $_SERVER['REMOTE_ADDR']; 
    } 
    return $onlineip; 
} 

function get_public_ip() {//得到公网IP地址
    $getlink = curl_init();
    curl_setopt($getlink, CURLOPT_URL, "http://city.ip138.com/ip2city.asp");
    curl_setopt($getlink, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($getlink, CURLOPT_HEADER, 0);
    $ip_str = curl_exec($getlink);
    preg_match('/\[(.*)\]/', $ip_str, $public_ip);
    curl_close($getlink);
    return $public_ip;
}

function GetIpLookup(){  
    $ip=get_public_ip();
    $ip=isset($ip[1])?$ip[1]:'';
    if(empty($ip)){ 
        $ip = get_onlineip();  
    }  
    $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']);  
    }
    return $json;  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值