Netzwerk-Funktionen

Inhaltsverzeichnis

  • checkdnsrr — Prüft DNS-Einträge auf Übereinstimmung mit einem gegebenen Internet-Hostnamen oder einer IP-Adresse
  • closelog — Schließt die Verbindung zum System-Logger
  • dns_check_record — Alias von checkdnsrr
  • dns_get_mx — Alias von getmxrr
  • dns_get_record — Liefert die zu einem Hostnamen gehörenden DNS-Einträge
  • fsockopen — Stellt eine Internet- oder Unix-Domain-Socket-Verbindung her
  • gethostbyaddr — Liefert den zur angegebenen IP-Adresse passenden Internet-Hostnamen
  • gethostbyname — Ermittelt die zum angegebenen Internet-Hostnamen passende IPv4-Adresse
  • gethostbynamel — Liefert eine Liste von IPv4-Adressen passend zum angegebenen Internet-Hostnamen
  • gethostname — Gets the host name
  • getmxrr — Ermittelt die zu einem Internet-Hostnamen passenden MX-Records
  • getprotobyname — Liefert die Protokollnummer anhand des Protokollnamens
  • getprotobynumber — Liefert den Protokollnamen anhand der Protokollnummer
  • getservbyname — Liefert die Portnummer passend zu einem Internet-Dienst und -Protokoll
  • getservbyport — Liefert den Internet-Dienst passend zu einem Port und Protokoll
  • header — Sendet einen HTTP-Header in Rohform
  • header_register_callback — Call a header function
  • header_remove — Remove previously set headers
  • headers_list — Liefert eine Liste der gesendeten (oder zum Senden vorbereiteten) Antwort-Header
  • headers_sent — Prüft, ob oder wo die Header bereits gesendet wurden
  • http_clear_last_response_headers — Clears the stored HTTP response headers
  • http_get_last_response_headers — Retrieve last HTTP response headers
  • http_response_code — Get or Set the HTTP response code
  • inet_ntop — Konvertiert eine komprimierte IP-Adresse in ein menschenlesbares Format
  • inet_pton — Konvertiert eine IP-Adresse im menschenlesbaren Format in eine komprimierte in_addr-Darstellung
  • ip2long — Konvertiert eine gemäß IPv4-Protokoll angegebene IP-Adresse vom Punkt-Format in ein Long Integer
  • long2ip — Konvertiert eine Long-Integer-Adresse in einen String, der das (IPv4) Internet-Standard-Punktformat enthält ("Dotted-Format")
  • net_get_interfaces — Get network interfaces
  • openlog — Stellt eine Verbindung zum Log-Dienst des Systems her
  • pfsockopen — Öffnet eine persistente Verbindung zum Internet oder zu einem Unix-Domainsocket
  • request_parse_body — Read and parse the request body and return the result
  • setcookie — Sendet ein Cookie
  • setrawcookie — Sendet ein Cookie, ohne seinen Wert zu URL-kodieren
  • socket_get_status — Alias von stream_get_meta_data
  • socket_set_blocking — Alias von stream_set_blocking
  • socket_set_timeout — Alias von stream_set_timeout
  • syslog — Erzeugt eine Meldung für das System-Log
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