繁体   English   中英

PHP - 如何在函数数组中使用配置文件变量?

[英]PHP - How to use config file variables in a function's array?

我找不到我想要完成的例子。 我想我不知道要使用正确的搜索词。 我有一个工作脚本,但我想通过添加一个主要的、管理员可编辑的配置文件来使其更加灵活。

我有以下 function:

    function ip_is_mobile($ip) {
        $pri_addrs = array(                 
            '66.87.0.0-66.87.255.255',  // Sprint mobile
            '174.192.0.0-174.255.255.255'   // Verizon mobile
        );
    
        $long_ip = ip2long($ip);
    
        if($long_ip != -1) {

            foreach($pri_addrs AS $pri_addr) {
                list($start, $end) = explode('-', $pri_addr);

                // IF IS a mobile IP
                if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
                    return true;
            }
        }
        return false;
    }

我想用将在主配置文件中设置的变量或定义替换 function 中的硬编码 IP 地址范围,以便配置文件具有类似于以下内容的内容:

// Mobile IP address ranges. Add as many as needed.
$MobileIPs['0']="66.87.0.0-66.87.255.255";
$MobileIPs['1']="174.192.0.0-174.255.255.255";
$MobileIPs['2']="85.110.50.0/24";

我的目标是为管理员提供一种易于阅读和理解的方式来根据需要添加尽可能多的 IP 地址范围(可能最多 20 个)。 如果有更好、更有效的方法,我不反对完全重写 function。 除了 IP 范围之外,如果还可以指定 CIDR,那将是有利的; 如上面最后一行代码所示。

我需要对 function 进行哪些编辑以及主配置文件中的相应行是什么,以便用户可以添加任意数量的范围或 CIDR?

您可以将 ip 范围的配置存储在单独的配置文件中,并在主代码中使用require_once

ip_ranges.conf.php (配置文件)

<?php

    $pri_addrs = array(                 
        '66.87.0.0-66.87.255.255',    // Sprint mobile
        '174.192.0.0-174.255.255.255' // Verizon mobile
    );

index.php (主代码文件)

function ip_is_mobile($ip) {
    require_once(ip_ranges.conf.php); // include config file

    $long_ip = ip2long($ip);

    if($long_ip != -1) {
        foreach($pri_addrs AS $pri_addr) {
            list($start, $end) = explode('-', $pri_addr);
                 
             // IF IS a mobile IP
             if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
            return true;
        }
    }
    return false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM