Hola Gente que tal !!
Tratando de validar el ingreso en un text una IP definiendo que :
si serian validas "0.0.0.1" o "255.255.255.254" o "0~255.0~255.0~255.1~254 / 2~32"
y no lo serian
"0.0.0.0" o "255.255.255.255" o 10.10.10.2 /33
Creo que el codigo esta correcto, esta en una funcion que retorna true al ser una IP Valida, pero se parece mucho a mi suegra (reclama por todo) (ordene un poco el codigo)
Alguna idea?
sl2
Código PHP:
function ValidarIP($IP) ////////////////////////// validador de IP #################
{
$IPValida = false;
$IP = str_replace(" ","",$IP);
if (substr_count($IP,".") == 3)
{
if (substr_count($IP,'/') == 1) //con red
{
{
list($IP,$Red) = split('[/]',$IP);
if
(
($Red == 32) ||
($Red == 16) ||
($Red == 8) ||
($Red == 4) ||
($Red == 2)
)
{
list($oct1,$oct2,$oct3,$oct4) = split ('[.]',$IP);
if
(
(is_numeric($oct1) == true) &&
(is_numeric($oct2) == true) &&
(is_numeric($oct3) == true) &&
(is_numeric($oct4) == true)
)
{
if
(
(($oct1 >= 0)&& ($oct1 <= 255)) &&
(($oct2 >= 0)&& ($oct2 <= 255)) &&
(($oct3 >= 0)&& ($oct3 <= 255)) &&
(($otc4 < 255)&& ($otc4 > 0 ))
)
{
$IPValida = true;
}
}
}
}
}
if(substr_count($IP,'/') == 0 ) //sin Red
{
{
list($oct1,$oct2,$oct3,$oct4) = split ('[.]',$IP);
if
(
(is_numeric($oct1) == true) &&
(is_numeric($oct2) == true) &&
(is_numeric($oct3) == true) &&
(is_numeric($oct4) == true )
)
{
if
(
(($oct1 >= 0)&& ($oct1 <= 255)) &&
(($oct2 >= 0)&& ($oct2 <= 255)) &&
(($oct3 >= 0)&& ($oct3 <= 255)) &&
(($otc4 > 0)&& ($otc4 < 255))
)
{
$IPValida = true;
}
}
}
}
}
return $IPValida;
}