从 IP 地址获取位置 [已关闭]
2022-08-30 06:21:58
我想从访问者的IP地址中检索访问者的城市,州和国家/地区等信息,以便我可以根据他们的位置自定义我的网页。有没有一个好的和可靠的方法来做到这一点在PHP中?我使用JavaScript进行客户端脚本编写,PHP用于服务器端脚本,MySQL用于数据库。
我想从访问者的IP地址中检索访问者的城市,州和国家/地区等信息,以便我可以根据他们的位置自定义我的网页。有没有一个好的和可靠的方法来做到这一点在PHP中?我使用JavaScript进行客户端脚本编写,PHP用于服务器端脚本,MySQL用于数据库。
您可以下载免费的 GeoIP 数据库并在本地查找 IP 地址,也可以使用第三方服务并执行远程查找。这是更简单的选项,因为它不需要设置,但它确实引入了额外的延迟。
您可以使用的第三方服务是我的,http://ipinfo.io。它们提供主机名,地理位置,网络所有者和其他信息,例如:
$ curl ipinfo.io/8.8.8.8
{
"ip": "8.8.8.8",
"hostname": "google-public-dns-a.google.com",
"loc": "37.385999999999996,-122.0838",
"org": "AS15169 Google Inc.",
"city": "Mountain View",
"region": "CA",
"country": "US",
"phone": 650
}
下面是一个 PHP 示例:
$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
echo $details->city; // -> "Mountain View"
您也可以在客户端使用它。下面是一个简单的 jQuery 示例:
$.get("https://ipinfo.io/json", function (response) {
$("#ip").html("IP: " + response.ip);
$("#address").html("Location: " + response.city + ", " + response.region);
$("#details").html(JSON.stringify(response, null, 4));
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h3>Client side IP geolocation using <a href="http://ipinfo.io">ipinfo.io</a></h3>
<hr/>
<div id="ip"></div>
<div id="address"></div>
<hr/>Full response: <pre id="details"></pre>
以为我会发布,因为似乎没有人提供有关此特定API的信息,但它返回的正是我所追求的,您可以让它以多种格式返回, .json, xml and csv
$location = file_get_contents('http://freegeoip.net/json/'.$_SERVER['REMOTE_ADDR']);
print_r($location);
这将为您提供您可能想要的所有内容:
{
"ip": "77.99.179.98",
"country_code": "GB",
"country_name": "United Kingdom",
"region_code": "H9",
"region_name": "London, City of",
"city": "London",
"zipcode": "",
"latitude": 51.5142,
"longitude": -0.0931,
"metro_code": "",
"areacode": ""
}