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

PHP如何在函数中调用配置文件IP段变量并支持CIDR格式

实现方案

1. 主配置文件(示例命名为config.php)

管理员仅需要编辑这个文件添加IP规则,无需修改业务逻辑代码,写法简单易懂:

<?php
// 移动IP地址范围配置,支持「起始IP-结束IP」和「CIDR格式」两种写法,按需新增即可
$MobileIPs = [];
$MobileIPs[] = "66.87.0.0-66.87.255.255"; // Sprint mobile
$MobileIPs[] = "174.192.0.0-174.255.255.255"; // Verizon mobile
$MobileIPs[] = "85.110.50.0/24";
// 新增规则直接按照上面的格式添加即可,不需要手动调整下标
?>

2. 优化后的IP校验函数

兼容原有IP范围格式的同时新增CIDR格式支持,代码如下:

<?php
// 引入配置文件,可根据项目实际路径调整
require_once 'config.php';

function ip_is_mobile($ip) {
    // 引入全局配置变量,也可根据需求改为将配置作为参数传入函数
    global $MobileIPs;
    $longIp = ip2long($ip);
    
    // 输入为无效IP直接返回false
    if ($longIp === false || $longIp == -1) {
        return false;
    }
    
    foreach ($MobileIPs as $range) {
        $range = trim($range);
        if (empty($range)) {
            continue;
        }

        // 处理横杠分隔的IP范围
        if (strpos($range, '-') !== false) {
            list($startIp, $endIp) = explode('-', $range, 2);
            $startLong = ip2long(trim($startIp));
            $endLong = ip2long(trim($endIp));
            if ($startLong && $endLong && $longIp >= $startLong && $longIp <= $endLong) {
                return true;
            }
        }
        // 处理CIDR格式IP段
        elseif (strpos($range, '/') !== false) {
            list($subnet, $mask) = explode('/', $range, 2);
            $subnetLong = ip2long(trim($subnet));
            $mask = intval(trim($mask));
            if ($subnetLong && $mask >= 0 && $mask <= 32) {
                $maskLong = ~((1 << (32 - $mask)) - 1);
                $startLong = $subnetLong & $maskLong;
                $endLong = $startLong + pow(2, 32 - $mask) - 1;
                if ($longIp >= $startLong && $longIp <= $endLong) {
                    return true;
                }
            }
        }
    }
    return false;
}
?>

使用说明

  • 管理员添加规则无需懂代码,直接在配置文件里新增对应格式的IP段即可,两种格式可以自由混用,最多20条的量级下完全不会有性能问题
  • 函数内置格式容错,填写错误的配置条目会自动跳过,不会影响正常功能
  • 代码兼容PHP5.6及以上所有常用版本,无需额外扩展支持

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:24:02