Validar máscara e IP inicial da rede com PHP
Dica publicada em PHP / Rede
Validar máscara e IP inicial da rede com PHP
Três funções em PHP simples que verificam se o IP passado é um IP de início da rede ou não. Particularmente eu aconselho criar uma classe para trabalhar com isto!
A função checkNet retorna string de erro ou nada para tudo válido.
function fill0($x){
return str_pad($x,8,'0',STR_PAD_LEFT);
}
function ip2bin($x){
preg_match_all("/[0-9]{1,3}/","$x",$a);
$b=array_map("decbin",$a[0]);
$c=array_map("fill0",$b);
return ("$c[0]$c[1]$c[2]$c[3]");
}
function checkNet($ip,$mask){
$b=ip2bin($mask);
if (!preg_match("/^1*0*$/",$b)) return "Máscara inválida";
$a=ip2bin($ip);
if (($a | $b) !== $b) return "Ip de rede inválido";
}
// Executando //
$x=checkNet($a="128.0.0.0",$b="128.0.1.0");
echo ($x?$x:"Rede Válida")."\n";
return str_pad($x,8,'0',STR_PAD_LEFT);
}
function ip2bin($x){
preg_match_all("/[0-9]{1,3}/","$x",$a);
$b=array_map("decbin",$a[0]);
$c=array_map("fill0",$b);
return ("$c[0]$c[1]$c[2]$c[3]");
}
function checkNet($ip,$mask){
$b=ip2bin($mask);
if (!preg_match("/^1*0*$/",$b)) return "Máscara inválida";
$a=ip2bin($ip);
if (($a | $b) !== $b) return "Ip de rede inválido";
}
// Executando //
$x=checkNet($a="128.0.0.0",$b="128.0.1.0");
echo ($x?$x:"Rede Válida")."\n";
A função checkNet retorna string de erro ou nada para tudo válido.