dtlab08822 2013-09-11 05:27
浏览 111
已采纳

给定IP地址和子网,如何使用php计算IP范围

I have the following code snippet and im trying to detect if an IP address falls into a certain range. Most of the time I have the IP address and the subnet but sometimes I just have the IP address only.

<?php

function CalculateRange($IP,$Subnet=""){

    //Calculate subnetmax
    if ($Subnet==""){

    }        

    //Calculate max IP

    return $MaxIP;
}

//--- IP range
$IPRange = array (
    array("address"=>"196.201.26.0","subnet"=>"255.255.252.0"),
    array("address"=>"196.202.43.0","subnet"=>"255.255.0.0"),
    array("address"=>"196.203.44.0","subnet"=>"255.255.128.0"),
);

//Display MaxIP for each IP and Subnet
foreach ($IPRange as $pair) {
    echo "<p>";
    echo "For IP:{$pair['address']} with Subnet:{$pair['subnet']}.";
    echo "MaxIP is ";
    echo CalculateRange($pair['address'],$pair['subnet']);  
    echo "</p>";
}

?>

My question is how do I calculate MaxIP for the IP and Subnet combo?

  • 写回答

2条回答 默认 最新

  • dtnat7146 2013-09-16 10:30
    关注

    The below worked perfectly

    function isInRange() {
    
        //--- IP range
        $IPRange = array (
            array("address"=>"197.207.35.238","subnet"=>"255.255.0.0"),
            array("address"=>"41.207.44.232","subnet"=>"255.255.10.0"),
            array("address"=>"40.207.44.250","subnet"=>"255.255.0.0")
        );
    
        foreach ($IPRange as $pair) {
    
            //Check if we have subnet mask
            if ($pair['subnet']!='') {
                // simple example
                $bcast = ip2long($_SERVER['REMOTE_ADDR']);
                $smask = ip2long($pair['subnet']);
                $nmask = $bcast & $smask;
                $SourceStartIP = long2ip($nmask);
    
                if($SourceStartIP==$pair['address']) {
                    //This is in range
                    return true;
                }
    
            } else {
    
                //--- The header matches something in the fixed list
                if ($pair['address'] == $_SERVER['REMOTE_ADDR']) {
    
                    return true;
    
                }
    
            }
        }
    
        return false;
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)