通过IP地址获取所在城市(高德)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过IP地址获取所在城市(高德)相关的知识,希望对你有一定的参考价值。
参考技术A 之前搜索过一些根据用户 ip 获取城市地位的一些 API 感觉都不够整洁。突然之间灵光一闪想到了高德必定提供了相关的 API。第一步:登录 https://lbs.amap.com/ 高德地图开放平台,注册个人开发者(免费)
第二步:
第三步:
第四步
安装要求申请一个 key,完成之后,https://restapi.amap.com/v3/ip?key=yourKey. 就可以访问到相关数据啦。(免费)
附:如果有帮助到您,点个赞呗,蟹蟹。😀
php 怎么通过ip来获取所在位置
echo getcposition(getIP());function getIP()
if (isset($_SERVER))
if (isset($_SERVER[HTTP_X_FORWARDED_FOR]))
$realip = $_SERVER[HTTP_X_FORWARDED_FOR];
elseif (isset($_SERVER[HTTP_CLIENT_IP]))
$realip = $_SERVER[HTTP_CLIENT_IP];
else
$realip = $_SERVER[REMOTE_ADDR];
else
if (getenv("HTTP_X_FORWARDED_FOR"))
$realip = getenv( "HTTP_X_FORWARDED_FOR");
elseif (getenv("HTTP_CLIENT_IP"))
$realip = getenv("HTTP_CLIENT_IP");
else
$realip = getenv("REMOTE_ADDR");
return $realip;
function getcposition($ip)
$res1 = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$ip");
$res1 = json_decode($res1,true);
//print_r($res1);
if ($res1[ "code"]==0)
return $res1['data']["country"].$res1['data'][ "region"].$res1['data']["city"]."_".$res1['data'][ "isp"];
else
return "未知";
?> 参考技术A 可以使用第三方接口 比如百度地图 它可以通过ip来定位用户的经纬度坐标 有了坐标就可以直接定位用户所在城市和具体位置 参考技术B 我的代码,需要的朋友可以直接复制使用:
<?php
header('Content-Type:text/html;Charset=utf-8');
function GetIp()
$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;
function GetIpLookup($ip = '')
if(empty($ip))
$ip = GetIp();
$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;
return $json;
$ipInfos = GetIpLookup('123.125.114.144'); //baidu.com IP地址
var_dump($ipInfos);
以上是关于通过IP地址获取所在城市(高德)的主要内容,如果未能解决你的问题,请参考以下文章