Сетевые функции

Содержание

  • checkdnsrr — Проверяет DNS-записи, которые соответствуют имени узла в Интернете или IP-адресу
  • closelog — Закрывает соединение с системным журналом
  • dns_check_record — Псевдоним checkdnsrr
  • dns_get_mx — Псевдоним getmxrr
  • dns_get_record — Получает DNS-записи хоста
  • fsockopen — Открывает соединение с сокетом интернет- или Unix-домена
  • gethostbyaddr — Получает доменное имя хоста, соответствующее переданному IP-адресу
  • gethostbyname — Получает IPv4-адрес, соответствующий переданному имени хоста
  • gethostbynamel — Получает список IPv4-адресов, соответствующих переданному доменному имени хоста
  • gethostname — Получает имя хоста
  • getmxrr — Получает записи MX, соответствующие переданному доменному имени хоста
  • getprotobyname — Получает номер протокола по имени
  • getprotobynumber — Получает имя протокола по номеру
  • getservbyname — Получает номер порта, связанного с интернет-службой и протоколом
  • getservbyport — Получает интернет-службу, соответствующую заданному порту и протоколу
  • header — Отправляет необработанный HTTP-заголовок
  • header_register_callback — Вызывает функцию заголовка
  • header_remove — Удаляет ранее установленные заголовки
  • headers_list — Возвращает список переданных заголовков (или готовых к отправке)
  • headers_sent — Проверяет, были ли отправлены заголовки
  • http_clear_last_response_headers — Очищает сохранённые заголовки HTTP-ответов
  • http_get_last_response_headers — Получает заголовки последнего HTTP-ответа
  • http_response_code — Получает или устанавливает код ответа HTTP
  • inet_ntop — Конвертирует упакованный интернет-адрес в читаемый формат
  • inet_pton — Конвертирует читаемый IP-адрес в его упакованное представление in_addr
  • ip2long — Конвертирует строку, содержащую IPv4-адрес в целое число
  • long2ip — Конвертирует целое число в IPv4-адрес
  • net_get_interfaces — Получает сетевые интерфейсы
  • openlog — Открывает соединение к системному средству журналирования
  • pfsockopen — Открывает постоянное соединение с интернет-сокетом или доменным сокетом Unix
  • request_parse_body — Считывает и разбирает тело запроса, а затем возвращает результат
  • setcookie — Отправляет cookie
  • setrawcookie — Отправляет cookie без URL-кодирования значения
  • socket_get_status — Псевдоним stream_get_meta_data
  • socket_set_blocking — Псевдоним stream_set_blocking
  • socket_set_timeout — Псевдоним stream_set_timeout
  • syslog — Генерирует сообщение для системного журнала
Добавить

Примечания пользователей 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