首页 > 后端开发 > php教程 > 如何验证IP地址是否属于CIDR子网?

如何验证IP地址是否属于CIDR子网?

Linda Hamilton
发布: 2024-10-18 19:32:03
原创
596 人浏览过

How to Verify if an IP Address Belongs to a CIDR Subnet?

验证 CIDR 子网内的 IP 包含

在网络配置领域,确定 IP 地址是否属于特定 CIDR 子网是一项常见任务。本文介绍了一种使用基本内置函数来完成此操作的简单方法。

方法

该算法依赖于使用 ip2long( 将 IP 地址和 CIDR 子网范围转换为长整数) ) 功能。随后,计算与 CIDR 范围中的 /xx 表示法对应的子网掩码。

最后一步涉及在 IP 和子网掩码之间执行按位“与”运算。如果结果与子网匹配,则可以确认所提供的 IP 地址位于指定的子网内。

实现

下面的代码提供了上述算法的实现:

<code class="php">function cidr_match($ip, $range)
{
    list ($subnet, $bits) = explode('/', $range);
    if ($bits === null) {
        $bits = 32;
    }
    $ip = ip2long($ip);
    $subnet = ip2long($subnet);
    $mask = -1 << (32 - $bits);
    $subnet &= $mask; // Adjust subnet alignment if necessary
    return ($ip & $mask) == $subnet;
}</code>
登录后复制

此函数可以按如下方式使用:

<code class="php">$ips = array('10.2.1.100', '10.2.1.101', '10.5.1.100', '1.2.3.4');

foreach ($ips as $IP) {
    if (cidr_match($IP, '10.2.0.0/16') == true) {
        print "You're in the 10.2 subnet\n";
    }
}</code>
登录后复制

此代码将输出:

You're in the 10.2 subnet
You're in the 10.2 subnet
登录后复制

以上是如何验证IP地址是否属于CIDR子网?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板