准备本地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年)