从PHP获取IP的位置详细信息,可以使用第三方API来实现。以下是一些常用的API服务:
function getIPInfo($ip) {
$query = @unserialize(file_get_contents('http://ip-api.com/php/' . $ip));
if($query && $query['status'] == 'success') {
return $query;
}
return false;
}
$ip = $_SERVER['REMOTE_ADDR'];
$ipInfo = getIPInfo($ip);
if($ipInfo) {
echo 'IP地址:' . $ipInfo['query'] . '<br>';
echo '国家:' . $ipInfo['country'] . '<br>';
echo '地区:' . $ipInfo['regionName'] . '<br>';
echo '城市:' . $ipInfo['city'] . '<br>';
echo 'ISP:' . $ipInfo['isp'] . '<br>';
echo '经度:' . $ipInfo['lon'] . '<br>';
echo '纬度:' . $ipInfo['lat'] . '<br>';
} else {
echo '无法获取IP地址信息';
}
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;
$reader = new Reader('GeoIP2-City.mmdb');
$ip = $_SERVER['REMOTE_ADDR'];
try {
$record = $reader->city($ip);
echo 'IP地址:' . $ip . '<br>';
echo '国家:' . $record->country->name . '<br>';
echo '地区:' . $record->mostSpecificSubdivision->name . '<br>';
echo '城市:' . $record->city->name . '<br>';
echo 'ISP:' . $record->traits->isp . '<br>';
echo '经度:' . $record->location->longitude . '<br>';
echo '纬度:' . $record->location->latitude . '<br>';
} catch (\Exception $e) {
echo '无法获取IP地址信息';
}
需要注意的是,以上两种方法都需要在服务器上安装相应的扩展和库,并且需要提前下载和配置相关的数据库文件。
领取专属 10元无门槛券
手把手带您无忧上云