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

Canales RSS

Lo más fresco

  1. Enlaces sobre desarrollo web Modificado
  2. Cadena aleatoria en PHP Modificado
  3. Recortar texto Nuevo

Sugerencias del chef

Lo más visitado

  1. Canales RSS
  2. Enlaces sobre desarrollo web
  3. Formato condicional según el día de la semana
  4. Rotar logs en Windows
  5. Fecha y hora
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 2011-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.

Nota importante: este algoritmo no funciona correctamente en PHP de 32 bits y la función no verifica el entorno sobre el que se ejecuta.

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 martes 29 de septiembre de 2026 (01:44:04 +0200) desde https://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.

Lorem ipsum dolor sit amet.

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