所以我试图检查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);
?>