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