Jump to content
Ceacer 综合政务论坛

Geoip库用法适用于跳转玩法


高育良

Recommended Posts

无需其他接口即可获取

可根据下方代码写出判断ip、国家、运营商、是否机房ip、是否代理以进行跳转

相关参考代码:

<?php
/**
 * IP 查询接口
 * 支持 ?ip=1.1.1.1
 * 返回 JSON 格式:
 * {"country":"中国","province":"湖南","city":"长沙"}
 */
header('Content-Type: application/json; charset=utf-8');
error_reporting(0);
require_once __DIR__ . '/geoip/vendor/autoload.php'; // 注意 vendor 路径
use GeoIp2\Database\Reader;
$ip = isset($_GET['ip']) ? $_GET['ip'] : $_SERVER['REMOTE_ADDR'];
// 简单校验 IP
if(!filter_var($ip, FILTER_VALIDATE_IP)){
    echo json_encode(['error'=>'请输入正确 IP']);
    exit;
}
try {
    // GeoLite2 数据库路径
    $reader = new Reader(__DIR__ . '/geoip/GeoLite2-City.mmdb');
    $record = $reader->city($ip);
    $country  = $record->country->names['zh-CN'] ?? $record->country->name ?? '';
    $province = $record->mostSpecificSubdivision->names['zh-CN'] ?? $record->mostSpecificSubdivision->name ?? '';
    $city     = $record->city->names['zh-CN'] ?? $record->city->name ?? '';
    // 国内显示市
    if($country === '中国'){
        $city_name = $city ?: $province;
    } else {
        // 国外显示州/省,如果没有州显示国家
        $city_name = $province ?: $country;
    }
    echo json_encode([
        'country'  => $country,
        'province' => $province,
        'city'     => $city_name
    ], JSON_UNESCAPED_UNICODE);
} catch (Exception $e){
    echo json_encode([
        'country' => '未知',
        'province'=> '',
        'city'    => '未知'
    ], JSON_UNESCAPED_UNICODE);
}
{
  "country": "美国",
  "province": "弗吉尼亚州",
  "city": "弗吉尼亚州"
}

下载地址

file-2026-02-16-02-45-03.zip

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

我们已在您的设备上放置cookies,以帮助改进本网站。您可以调整您的cookie设置,否则我们将默认您同意继续使用