php获取客户端归属地,浅析php如何获取客户端IP真实地址和归属地

php如何获取客户端IP真实地址和归属地?接下来我们就简单分析一下。

//代码如下:

/*获取客户端真实的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。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值