使用PHP来实现一个根据访问者IP地址返回省市信息的API

使用PHP来实现一个根据访问者IP地址返回省市信息的API

2021-06-15 21:47:03 下载 游客

售价:0积分 收藏

特别声明:如您有任何使用问题请联系csscode ,可以远程协助你解决问题

  • 准备本地IP数据库: 下载并准备MaxMind的GeoLite2数据库文件(例如:GeoLite2-City.mmdb)。

  • 安装依赖: 安装MaxMind的PHP库来读取GeoLite2数据库。你可以使用Composer来安装:

  • composer require geoip2/geoip2

编写API代码: 创建一个PHP文件(例如:index.php),编写以下代码:(自己添加php开头结尾!基础)

require 'vendor/autoload.php';

use GeoIp2DatabaseReader;

// 加载GeoLite2数据库
$reader = new Reader('GeoLite2-City.mmdb');

// 获取客户端IP地址的函数
function getClientIp() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

try {
    // 获取客户端IP
    $ip = getClientIp();

    // 获取地理位置信息
    $record = $reader->city($ip);

    // 提取省市信息
    $province = $record->mostSpecificSubdivision->names['en'] ?? 'Unknown';
    $city = $record->city->names['en'] ?? 'Unknown';

    // 返回JSON响应
    header('Content-Type: application/json');
    echo json_encode([
        'province' => $province,
        'city' => $city
    ]);
} catch (Exception $e) {
    // 返回错误信息
    header('Content-Type: application/json');
    echo json_encode([
        'error' => 'Unable to determine location',
        'message' => $e->getMessage()
    ]);
}

mmdb文件下载

一直在更新(最近更新2024年)



在线下载列表

发表评论

用户头像 游客
此处应有掌声~

评论列表

还没有评论,快来说点什么吧~