You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于IP地理定位的域名定向跳转功能异常求助

问题排查:IP校验实现域名定向跳转异常

需求与异常现象

  • 需求:泰国(TH)IP访问时跳转至example.com,其他IP显示另一页面;身处泰国,使用新加坡(SG)VPN测试
  • 异常:
    • 设置判断条件为TH时,始终显示另一页面
    • 设置判断条件为SG时,所有IP(包括本地TH IP)均跳转到example.com

当前使用的PHP代码

$ip = $_SERVER['REMOTE_ADDR'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];

if (!is_bot($user_agent, $bots)) {
    $access_key = '6adf16bff8db66'; // Replace with your ipinfo.io access key
    $ch = curl_init('http://ipinfo.io/' . $ip . '?token=' . $access_key);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $json = curl_exec($ch);
    curl_close($ch);

    $ip_details = json_decode($json, true);

    if ($ip_details['country'] == 'TH') {
        header('Location: https://example.com/');
        exit;
    }
}

排查与修复步骤

1. 验证获取的IP是否准确

  • 直接输出$_SERVER['REMOTE_ADDR']的值,确认是否为当前实际访问IP(比如用SG VPN时应显示SG地区IP,本地TH网络显示TH地区IP)
  • 若使用反向代理/CDN,$_SERVER['REMOTE_ADDR']可能返回代理服务器IP,需改用$_SERVER['HTTP_X_FORWARDED_FOR']或对应服务的专属IP头(如Cloudflare的HTTP_CF_CONNECTING_IP),同时注意防范IP伪造风险

2. 检查ipinfo.io请求的返回数据

  • 在curl执行后添加调试代码,输出原始返回值和解析结果:
    var_dump($json);
    var_dump($ip_details);
    exit;
    
  • 可能的问题:
    • curl请求失败(服务器无法访问ipinfo.io),导致$json为false,json_decode后$ip_details为null,PHP弱类型转换会让null == 'SG'返回true,引发全量跳转
    • IP归属地识别错误,返回的country字段与实际IP地区不符

3. 校验is_bot函数与$bots变量

  • 代码中未定义$bots变量,可能导致is_bot函数执行出错,使外层if (!is_bot(...))条件不成立,IP校验逻辑完全未触发
  • 验证is_bot函数逻辑,确认是否误将正常用户判定为爬虫,导致跳转逻辑不执行

4. 修复弱类型比较问题

  • 将$ip_details['country'] == 'TH'改为严格比较$ip_details['country'] === 'TH',避免弱类型转换引发的意外匹配
  • 同时添加有效性判断,确保数组和字段存在:
    if (is_array($ip_details) && isset($ip_details['country']) && $ip_details['country'] === 'TH') {
        header('Location: https://example.com/');
        exit;
    }
    

5. 检查curl请求错误

  • 添加curl错误捕获,确认请求是否成功:
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $json = curl_exec($ch);
    if(curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch);
        exit;
    }
    curl_close($ch);
    

内容的提问来源于stack exchange,提问作者RobbinCases

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:21:05