Поэтому я пытаюсь проверить, находится ли IP-адрес в качестве определенного префикса или сети. Я почти запустил эту программу, однако мой if if else только повторяет первую часть, даже если вы предоставляете данные, которые должны возвращать false. Интересно, как я могу решить эту проблему. Спасибо
Позже я повторяю свой 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);
?>
Задача ещё не решена.
Других решений пока нет …