PHP 8.5.0 Alpha 2 available for testing

Funciones de red

Tabla de contenidos

  • checkdnsrr — Resolución DNS de una dirección IP
  • closelog — Cierra la conexión al registro del sistema
  • dns_check_record — Alias de checkdnsrr
  • dns_get_mx — Alias de getmxrr
  • dns_get_record — Lee los datos DNS asociados a un host
  • fsockopen — Abre un socket de conexión Internet o Unix
  • gethostbyaddr — Devuelve el nombre de host correspondiente a una IP
  • gethostbyname — Obtener la dirección IPv4 que corresponde a un nombre de host de Internet dado
  • gethostbynamel — Devuelve la lista de direcciones IPv4 correspondientes a un host
  • gethostname — Lee el nombre del host
  • getmxrr — Devuelve los registros MX de un host
  • getprotobyname — Devuelve el número de protocolo asociado a un nombre de protocolo
  • getprotobynumber — Devuelve el nombre de protocolo asociado a un número de protocolo
  • getservbyname — Devuelve el número de puerto asociado a un servicio de Internet y un protocolo
  • getservbyport — Devuelve el servicio de Internet que corresponde al puerto y protocolo
  • header — Envía un encabezado HTTP bruto
  • header_register_callback — Llamar a una función de cabecera
  • header_remove — Elimina un encabezado HTTP
  • headers_list — Devuelve la lista de los encabezados de respuesta del script actual
  • headers_sent — Indica si los encabezados HTTP ya han sido enviados
  • http_clear_last_response_headers — Borra los encabezados de respuesta HTTP almacenados
  • http_get_last_response_headers — Obtiene los últimos encabezados de respuesta HTTP
  • http_response_code — Obtiene o define el código de respuesta HTTP
  • inet_ntop — Convierte un paquete de direcciones internet en una representación legible por humanos
  • inet_pton — Convierte una dirección IP legible en su representación in_addr
  • ip2long — Convierte una cadena que contiene una dirección (IPv4) en notación decimal con puntos en una dirección entera larga
  • long2ip — Convierte un entero largo (IPv4) a su notación decimal con puntos
  • net_get_interfaces — Devuelve las interfaces de red
  • openlog — Abre la conexión al historial del sistema
  • pfsockopen — Se abre un socket de conexión Internet o Unix persistente
  • request_parse_body — Lee y analiza el cuerpo de la petición y devuelve el resultado
  • setcookie — Envía una cookie
  • setrawcookie — Envía un cookie sin codificar su valor en URL
  • 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 en el historial del sistema
add a note

User Contributed Notes 5 notes

up
37
claudiu at cnixs dot com
18 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
11
Anton Avramov - lukav at lukav dot com
8 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
9 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
18 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