简单的PHP是子网中的IP因为ELSE问题

时间:2015-02-19 02:59:04

标签: php ip prefix subnet

所以我试图检查IP是否在特定前缀或网络范围内。我几乎已经运行了这个程序,但即使你提供的数据应该返回false,我的if if也只会回显第一部分。我想知道如何解决这个问题。感谢

我稍后回复我的ip_test(用户输入,IP,网络,Cidr)。 我通过HTTP页面上的表单提交获得这些值,而不是使用_REQUEST数组。

<?php

//variables + assignment of user input on html form.
$net = ($_REQUEST['uname1']);
$pre = ($_REQUEST['uname2']);
$ipv4 = ($_REQUEST['uname3']);

   function cidr_match ($ip, $network, $cidr)
    {

        if ((ip2long($ip) & ~((1 << (32 - $cidr)) - 1) ) == ip2long($network)) {
        echo "IP address $ip is within $network/$cidr subnet.";
        }
        else {
             echo "IP address $ip is NOT within $network/$cidr subnet."; 

        }


    }

    echo "Subnet ID:" . $net;
    echo "<br>";
    echo "Prefix Length:" . $pre;
    echo "<br>";
    echo "Subnet IP Address (IPv4):" . $ipv4;
    echo "<br>";
    echo cidr_match($ipv4, $net, $pre);

?>

0 个答案:

没有答案