Разработка сайтов, создание сайтов
главная / PHP / Вычисление подсети

Вычисление подсети

Функция для опеределния подсети по маске и ип-адресу.

Код - Функция для определения принадлежности ип к подсети
<?php

/**
* Функция применяет маску на ip и возвращет подсеть
*
* @param string $ip IP-адрес вида 192.168.0.1
* @param string $mask Маска подсети виды 255.255.255.0
* @return string Подсеть
*/
function applyNetMask($ip, $mask)
{
if ( is_string($ip ) ) $ip = ip2long($ip );
if ( is_string($mask) ) $mask = ip2long($mask);

return long2ip(sprintf('%u', $ip & $mask));
}

?>

Простой пример использования - функция, которая проверяет, является ли ip-адрес локальным.

Код - Функция для определения явлеяется ли адрес локальным
<?php

/**
* Функция определяет является ли IP-адрес локальным
*
* @param string $ip IP-адрес
* @return boolean
*/
function isLocalIp( $ip )
{
if ( '10.0.0.0' === applyNetMask($ip, '255.0.0.0' ) ) return true;
if ( '72.16.0.0' === applyNetMask($ip, '255.255.0.0') ) return true;
if ( '127.0.0.0' === applyNetMask($ip, '255.0.0.0' ) ) return true;
if ( '192.168.0.0' === applyNetMask($ip, '255.255.0.0') ) return true;

return false;
}

?>

Тестирование

Код - Тестирование функций
<?php

// Тестирование функций
echo '192.169.56.12 is ', isLocalIp('192.169.56.12') ? 'local' : 'world', PHP_EOL;
echo '127.123.41.21 is ', isLocalIp('127.123.41.21') ? 'local' : 'world', PHP_EOL;
echo '79.45.67.12 is ', isLocalIp('79.45.67.12' ) ? 'local' : 'world', PHP_EOL;
echo '10.23.42.122 is ', isLocalIp('10.23.42.122' ) ? 'local' : 'world', PHP_EOL;

?>

Результат

192.169.56.12 is world
127.123.41.21 is local
79.45.67.12 is world
10.23.42.122 is local


Источник: anton-pribora.ru
текущее:

НОВОСТИ

2011 г., «VisMech.ru»