Función comprobar si una ip es privada PHP

Iniciado por el-brujo, 16 Mayo 2012, 12:20 PM

0 Miembros y 1 Visitante están viendo este tema.

el-brujo

Código (php) [Seleccionar]
function ip_is_private($ip)
{
       $pri_addrs = array(
                         '10.0.0.0|10.255.255.255',
                         '172.16.0.0|172.31.255.255',
                         '192.168.0.0|192.168.255.255',
                         '169.254.0.0|169.254.255.255',
                         '127.0.0.0|127.255.255.255'
                        );

       $long_ip = ip2long($ip);
       if($long_ip != -1) {

           foreach($pri_addrs AS $pri_addr)
           {
               list($start, $end) = explode('|', $pri_addr);

                // IF IS PRIVATE
                if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
                return (TRUE);
           }
   }

return (FALSE);
}



Código (php) [Seleccionar]
if ( ip_is_private ( $ip_address1 ) )
{
   printf ( "%s is from a private address range\n", $ip_address1 );
}



Con PHP 5.2 o superior


Código (php) [Seleccionar]
<?php
 
function is_private_ip($ip)
{
     return !
filter_var($ipFILTER_VALIDATE_IPFILTER_FLAG_NO_PRIV_RANGE);
}
?>


Código (php) [Seleccionar]
if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE)) {
 // it's valid
}


CitarFILTER_VALIDATE_IP = validar una ip
FILTER_FLAG_IPV4 = validar una ip v4
FILTER_FLAG_NO_PRIV_RANGE = validar una ip rango privado
FILTER_FLAG_NO_RES_RANGE = validar una ip rango reservado
FILTER_FLAG_IPV6 = validar una ip v6

Ejemplo valdiar ip excluyendo ip's privadas y reservadas

Código (php) [Seleccionar]
if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
 // it's valid
}

Graphixx

#1
Xelente que el jefe le apueste al php, gracias por los post de programacion, de verdad super utiles como el de los emails:
http://foro.elhacker.net/php/validacion_email_formulario-t361047.0.html;topicseen

me surge una pregunta, como detecto desde php si la ip es ipv4 o si es ipv6 ???

aparte, existira alguna BD publica que indique los rangos de ips fijas publicas que poseen empresas como logmein hamachi, o tunngle, NOIP etc... para uno saber si es una ip de esas.

Puedo detectar si desde determinada ip, se esta consumiendo un canal irc ?, para saber si ese cliente es posiblemente una botnet...
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog