PHP Velho Oeste 2025

Funciones de red

Tabla de contenidos

  • checkdnsrr — Comprueba registros DNS correspondientes a un nombre de host de Internet dado o dirección IP
  • closelog — Cerrar conexión al log del sistema
  • dns_check_record — Alias de checkdnsrr
  • dns_get_mx — Alias de getmxrr
  • dns_get_record — Fetch DNS Resource Records associated with a hostname
  • fsockopen — Abre una conexión vía sockets a Internet o a un dominio Unix
  • gethostbyaddr — Obtener el nombre del host de Internet correspondiente a una dirección IP dada
  • gethostbyname — Obtener la dirección IPv4 que corresponde a un nombre de host de Internet dado
  • gethostbynamel — Obtener una lista de direcciones IPv4 que corresponde a un nombre de host de Internet dado
  • gethostname — Obtiene el nombre de host
  • getmxrr — Obtener los registros MX correspondientes a un nombre de host de Internet
  • getprotobyname — Obtener el número de protocolo asociado con el nombre de protocolo
  • getprotobynumber — Obtiene el nombre de protocolo asociado con un número de protocolo
  • getservbyname — Obtener el número de puerto asociado con un servicio y protocolo de Internet
  • getservbyport — Obtener el servicio de Internet que corresponde con el puerto y protocolo
  • header — Enviar encabezado sin formato HTTP
  • header_register_callback — Llamar a una función de cabecera
  • header_remove — Elimina encabezados previamente establecidos
  • headers_list — Devuelve una lista de encabezados de respuesta enviados (o listos para enviar)
  • headers_sent — Comprueba si o donde han enviado cabeceras
  • http_clear_last_response_headers — Clears the stored HTTP response headers
  • http_get_last_response_headers — Retrieve last HTTP response headers
  • http_response_code — Obtener o establecer el código de respuesta HTTP
  • inet_ntop — Convertir una dirección de internet empaquetada en una representación legible por humanos
  • inet_pton — Convertir una dirección IP legible por humanos a su representación in_addr empaquetada
  • ip2long — Convierte una cadena que contiene una dirección con puntos del Protocolo de Internet (IPv4) en una dirección apropiada
  • long2ip — Convierte una dirección de red (IPv4) en una cadena de texto en formato con puntos estándar de internet
  • net_get_interfaces — Get network interfaces
  • openlog — Open connection to system logger
  • pfsockopen — Abre Internet persistente o conexión de socket de dominio Unix
  • request_parse_body — Read and parse the request body and return the result
  • setcookie — Enviar una cookie
  • setrawcookie — Enviar una cookie sin codificar su valor
  • socket_get_status — Alias de stream_get_meta_data
  • socket_set_blocking — Alias de stream_set_blocking
  • socket_set_timeout — Alias de stream_set_timeout
  • syslog — Genera un mensaje log de sistema
add a note

User Contributed Notes 5 notes

up
37
claudiu at cnixs dot com
17 years ago
A simple and very fast function to check against CIDR.

Your previous examples are too complicated and involves a lot of functions call.

Here it is (only with arithmetic operators and call only to ip2long () and split() ):
<?php
function ipCIDRCheck ($IP, $CIDR) {
list (
$net, $mask) = split ("/", $CIDR);

$ip_net = ip2long ($net);
$ip_mask = ~((1 << (32 - $mask)) - 1);

$ip_ip = ip2long ($IP);

$ip_ip_net = $ip_ip & $ip_mask;

return (
$ip_ip_net == $ip_net);
}
?>
call example: <?php echo ipCheck ("192.168.1.23", "192.168.1.0/24"); ?>
up
10
Anton Avramov - lukav at lukav dot com
7 years ago
An improved version of claudiu at cnixs dot com not using split and working with the following:
ip: 192.168.101.123, CIRD: 192.168.101.144/24

<?php
function ipCIDRCheck ($IP, $CIDR) {
list (
$net, $mask) = explode ('/', $CIDR);

$ip_net = ip2long ($net);
$ip_mask = ~((1 << (32 - $mask)) - 1);

$ip_ip = ip2long ($IP);

return ((
$ip_ip & $ip_mask) == ($ip_net & $ip_mask));
}
?>
up
4
Anonymous
8 years ago
improved version of philippe-at-cyberabuse.org's answer:

<?php
function cidrconv($net) {
$start = strtok($net,"/");
$n = 3 - substr_count($net, ".");
if (
$n > 0)
{
for (
$i = $n;$i > 0; $i--)
$start .= ".0";
}
$bits1 = str_pad(decbin(ip2long($start)), 32, "0", STR_PAD_LEFT);
$net = (1 << (32 - substr(strstr($net, "/"), 1))) - 1;
$bits2 = str_pad(decbin($net), 32, "0", STR_PAD_LEFT);
$final = "";
for (
$i = 0; $i < 32; $i++)
{
if (
$bits1[$i] == $bits2[$i]) $final .= $bits1[$i];
if (
$bits1[$i] == 1 and $bits2[$i] == 0) $final .= $bits1[$i];
if (
$bits1[$i] == 0 and $bits2[$i] == 1) $final .= $bits2[$i];
}
return array(
$start, long2ip(bindec($final)));
}
?>
up
2
David GASTALDIN
17 years ago
Here a IP-Range to CIDRs function that I wrote for the purpose of filling my Postfix client.cidr with ripe-ncc data to block spamming from useless countries. Strcmp functions are meant to work around the silly PHP string comparison which inevitably tries compare strings as numbers when possible. I'll make no comment about that fact ... bit I have to bite my tong hard :

function PlageVersCIDRs($ip_min, $ip_max) {
$cidrs = array();
$ip_min_bin = sprintf('%032b', $ip_min);
$ip_max_bin = sprintf('%032b', $ip_max);
$ip_cour_bin = $ip_min_bin;
while (strcmp($ip_cour_bin, $ip_max_bin) <= 0) {
$lng_reseau = 32;
$ip_reseau_bin = $ip_cour_bin;
while (($ip_cour_bin[$lng_reseau - 1] == '0') && (strcmp(substr_replace($ip_reseau_bin, '1', $lng_reseau - 1, 1), $ip_max_bin) <= 0)) {
$ip_reseau_bin[$lng_reseau - 1] = '1';
$lng_reseau--;
}
$cidrs[] = long2ip(bindec($ip_cour_bin)).'/'.$lng_reseau;
$ip_cour_bin = sprintf('%032b', bindec($ip_reseau_bin) + 1);
}
return $cidrs;
}
up
2
philippe-at-cyberabuse.org
23 years ago
PHP miss CIDR functions.

This one will convert a CIDR like this:
0.0.0.0/16 -> 0.0.0.0 - 0.0.255.255
127.0/16 -> 127.0.0.0 - 127.0.255.255
etc...

function cidrconv($net) {
$start=strtok($net,"/");
$n=3-substr_count($net, ".");
if ($n>0) { for ($i=$n;$i>0;$i--) $start.=".0"; }
$bits1=str_pad(decbin(ip2long($start)),32,"0","STR_PAD_LEFT");
$net=pow(2,(32-substr(strstr($net,"/"),1)))-1;
$bits2=str_pad(decbin($net),32,"0","STR_PAD_LEFT");
for ($i=0;$i<32;$i++) {
if ($bits1[$i]==$bits2[$i]) $final.=$bits1[$i];
if ($bits1[$i]==1 and $bits2[$i]==0) $final.=$bits1[$i];
if ($bits1[$i]==0 and $bits2[$i]==1) $final.=$bits2[$i];
}
return $start." - ".long2ip(bindec($final));
}
To Top