borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Bookmarklets Nuevo
  2. Recetario básico para CakePHP/2 Nuevo
  3. Certificado auto-firmado Nuevo

Sugerencias del chef

Lo más visitado

  1. Fecha y hora
  2. Dar formato a un número
  3. Reiniciar secuencia
  4. Vaciar un esquema
  5. Certificado auto-firmado
Compartir esta página

¿Esta IP pertenece a esta red?

Esta función nos dice si una dirección IP dada pertenece a una determinada subred. El código es válido para IPv4.

/** * Devuelve TRUE si la dirección IPv4 dada pertenece a la subred indicada, FALSE si no * * @param string $str_ip Dirección IP en formato '127.0.0.1' * @param string $str_rango Red y máscara en formato '127.0.0.0/8', '127.0.0.0/255.0.0.0' o '127.0.0.1' * @return bool * * @version v2011-08-30 */ function ip_pertenece_a_red($str_ip, $str_rango){     // Extraemos la máscara     list($str_red, $str_mascara) = array_pad(explode('/', $str_rango), 2, NULL);     if( is_null($str_mascara) ){         // No se especifica máscara: el rango es una única IP         $mascara = 0xFFFFFFFF;     }elseif( (int)$str_mascara==$str_mascara ){         // La máscara es un entero: es un número de bits         $mascara = 0xFFFFFFFF << (32 - (int)$str_mascara);     }else{         // La máscara está en formato x.x.x.x         $mascara = ip2long($str_mascara);     }     $ip = ip2long($str_ip);     $red = ip2long($str_red);     $inf = $red & $mascara;     $sup = $red | (~$mascara & 0xFFFFFFFF);     return $ip>=$inf && $ip<=$sup; }

Se puede usar, por ejemplo, en un sistema de control de acceso con restricción por IP, comparando la dirección del visitante con cada rango autorizado.

Historial

v2011-08-30
Deshacerse del operador @ y mejorar la documentación.
v2008-11-25
Primera versión.

Esta página ha sido impresa el sábado 23 de septiembre de 2017 (02:23:53 +0200) desde http://borrame.com/recortes/php/ip-pertenece-a-red.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

borrame.com es el sitio anteriormente conocido como bits.demogracia.com (no confundir con Demogracia, que sólo pasaba por ahí).

© 2005-2017 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com