php案例 GeoIP2 PHP

composer require geoip2/geoip2

在这里插入图片描述

<?php
require 'vendor/autoload.php';

use GeoIp2\Database\Reader;

$ip = '8.8.8.8'; // 你可以用 $_SERVER['REMOTE_ADDR'] 获取访客IP

// 数据库文件路径
$dbFile = __DIR__ . '/GeoLite2-City.mmdb';

if (!file_exists($dbFile)) {
    die('GeoLite2 数据库文件不存在,请先下载并放到项目目录。');
}

$reader = new Reader($dbFile);

try {
    $record = $reader->city($ip);

    echo "国家: " . $record->country->name . "<br>";
    echo "省份: " . $record->mostSpecificSubdivision->name . "<br>";
    echo "城市: " . $record->city->name . "<br>";
    echo "邮编: " . $record->postal->code . "<br>";
    echo "纬度: " . $record->location->latitude . "<br>";
    echo "经度: " . $record->location->longitude . "<br>";
} catch (Exception $e) {
    echo "查询失败: " . $e->getMessage();
}
?>

这段PHP代码演示了如何使用MaxMind的GeoLite2-City数据库通过IP地址查询地理位置信息57。以下是代码的详细解释:

‌依赖加载与命名空间‌
    require 'vendor/autoload.php' 加载Composer自动生成的依赖文件
    use GeoIp2\Database\Reader 引入GeoIP2数据库读取器类57

‌IP地址设置‌
    $ip = '8.8.8.8' 是示例IP,实际应用中可通过$_SERVER['REMOTE_ADDR']获取访问者真实IP15

‌数据库检查‌
    检查GeoLite2-City.mmdb文件是否存在,若不存在则终止脚本511

‌数据库读取与查询‌
    创建Reader实例并加载数据库文件57
    $reader->city($ip)方法执行IP地理位置查询711

‌结果输出‌
    从返回的$record对象提取多级地理信息:
        国家名称:$record->country->name
        省份/州:$record->mostSpecificSubdivision->name
        城市:$record->city->name
        邮编:$record->postal->code
        经纬度:$record->location->latitude/longitude57

‌异常处理‌
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贵哥的编程之路(热爱分享 为后来者)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值