Я ищу функцию, чтобы определить, находится ли данный IPv4-адрес в данной сети.
Это будет похоже на this ;однако я не хочу устанавливать полный каркас или заново изобретать колесо, если в этом нет необходимости.
Идея будет похожа на следующее:
function IsInNetwork($givenIP, $networkIP, $netmask) {
// ???
}
$valid = IsInNetwork("10.0.9.35", "10.0.8.0", "255.255.254.0");
- РЕДАКТИРОВАТЬ -
С помощью Рича Адамса он указал мне правильное направление и придумал следующее:
function IsInNetwork2($givenIP, $networkIP, $netmask)
{
$ipaddr = ip2long($givenIP);
$netip = ip2long($networkIP);
$netmask = (ip2long($netmask) * -1) + $netip;
if ($ipaddr >= $netip && $ipaddr <= $netmask){
return true;
} else {
return false;
}
}