Вычисление подсети Функция для опеределния подсети по маске и ип-адресу.
Код - Функция для определения принадлежности ип к подсети |
<?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 |
текущее:
НОВОСТИ |