elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderadores: дٳŦ٭, #!drvy)
| | | |-+  Función comprobar si una ip es privada PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Función comprobar si una ip es privada PHP  (Leído 1,090 veces)
el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 18.526


La libertad no se suplica, se conquista


Ver Perfil WWW
Función comprobar si una ip es privada PHP
« en: 16 Mayo 2012, 12:20 »

Código
  1. function ip_is_private($ip)
  2. {
  3.        $pri_addrs = array(
  4.                          '10.0.0.0|10.255.255.255',
  5.                          '172.16.0.0|172.31.255.255',
  6.                          '192.168.0.0|192.168.255.255',
  7.                          '169.254.0.0|169.254.255.255',
  8.                          '127.0.0.0|127.255.255.255'
  9.                         );
  10.  
  11.        $long_ip = ip2long($ip);
  12.        if($long_ip != -1) {
  13.  
  14.            foreach($pri_addrs AS $pri_addr)
  15.            {
  16.                list($start, $end) = explode('|', $pri_addr);
  17.  
  18.                 // IF IS PRIVATE
  19.                 if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
  20.                 return (TRUE);
  21.            }
  22.    }
  23.  
  24. return (FALSE);
  25. }


Código
  1. if ( ip_is_private ( $ip_address1 ) )
  2. {
  3.    printf ( "%s is from a private address range\n", $ip_address1 );
  4. }


Con PHP 5.2 o superior


Código
  1. <?php
  2. function is_private_ip($ip)
  3. {
  4.     return !filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE);
  5. }
  6. ?>

Código
  1. if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE)) {
  2.  // it's valid
  3. }

Citar
FILTER_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
  1. if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
  2.  // it's valid
  3. }


« Última modificación: 16 Mayo 2012, 17:41 por el-brujo » En línea

Graphixx


Desconectado Desconectado

Mensajes: 1.219


Webmaster (PHP)


Ver Perfil WWW
Re: Función comprobar si una ip es privada PHP
« Respuesta #1 en: 17 Mayo 2012, 09:13 »

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...


« Última modificación: 17 Mayo 2012, 09:16 por Graphixx » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines