最近酷乐在项目中遇到一个需要获取用户IP信息并查询出用户地理位置信息的需求,代码如下:
1.首先获取用户具体的IP信息。
<?php
function getClientIp(){
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
}
if (getenv('HTTP_X_REAL_IP')) {
$ip = getenv('HTTP_X_REAL_IP');
} elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
$ips = explode(',', $ip);
$ip = $ips[0];
} elseif (getenv('REMOTE_ADDR')) {
$ip = getenv('REMOTE_ADDR');
} else {
$ip = '0.0.0.0';
}
return $ip;
}
2.通过获取到的IP信息调用接口查询用户的地理位置。
<?php
function info($ip)
{
$url = file_get_contents("http://ip.taobao.com/outGetIpInfo?ip=$ip&accessKey=alibaba-inc");
$res1 = json_decode($url,true);
$data =$res1;
if ($data) {
return $data['data'];
} else {
return 'unknown';
}
}
3.赋值。
<?php
$userip=getClientIp(); //把获取IP函数赋值给userip变量
$info = info($userip);//引用info函数并把userip变量带入赋值给info变量。
print_r($info)下变量即可查看到变量的数组信息,用<?php echo $info[''];?>调用即可。
例如:<?php echo $info['region'];?>即可获取到当前用户的省份。