要获取IP所在地,可以使用GeoIP数据库。以下是一个示例代码,可以获取IP所在的国家和城市:
<?php
$ipAddress = $_SERVER['REMOTE_ADDR'];
// IPv6地址需要转换为IPv4地址才能使用GeoIP数据库
if (filter_var($ipAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
$ipAddress = inet_ntop(inet_pton($ipAddress));
}
// 加载GeoIP数据库
$geoIPDatabase = geoip_open('GeoIP.dat', GEOIP_STANDARD);
// 获取IP所在的国家和城市
$country = geoip_country_name_by_addr($geoIPDatabase, $ipAddress);
$city = geoip_city_by_addr($geoIPDatabase, $ipAddress);
// 关闭GeoIP数据库
geoip_close($geoIPDatabase);
echo "IP地址: " . $ipAddress . "<br>";
echo "国家: " . $country . "<br>";
echo "城市: " . $city . "<br>";
?>
请确保已经下载并安装了GeoIP数据库文件(例如GeoIP.dat)。您可以从MaxMind网站上下载免费的GeoIP Lite数据库文件。
请注意,IPv6地址需要转换为IPv4地址才能在GeoIP数据库中使用。这里使用了inet_ntop
和inet_pton
函数进行IPv6地址的转换。
希望对你有所帮助!
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站