以下函数,适用于php5.6,php7可能不支持
//PHP获取客户端IP
function php_ip() {
//strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
$res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
return $res;
}
/**
* 根据ip地址获取地理地址
* @param string $ip IP
* @return string 地理地址
*/
function ipGetAddress($ip = '0.0.0.0')
{
$key = config('api.gd_key');
$data = [
'key' => $key,
'ip' => $ip
];
$params = http_build_query($data);
$url = "http://restapi.amap.com/v3/ip?$params";
$res = http($url, 'get');
$res = json_decode($res, true);
if ($res['status'] == 1) {
return $res['province'].$res['city'];
}else{
return false;
}
}
使用tp5框架获取客户端IP方式,简单明了