Узнать IP подсеть

Статус
В этой теме нельзя размещать новые ответы.

RusBiT

Постоялец
Регистрация
29 Мар 2007
Сообщения
101
Реакции
3
Доброго дня.
Мне нужно узнать IP адрес, и если адрес входит в диапазон 192.168.0.1 - 192.168.2.255 , то напечатать текст ПРЕВЕД (ну это для примера)
 
На каком языке-то?
 
PHP:
<?php
$first_ip = '192.168.0.1';
$last_ip = '192.168.2.255';
$user_ip = ( isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : getenv('REMOTE_ADDR') );

$long_first = ip2long($first_ip);
$long_second = ip2long($last_ip);
$long_user_ip = ip2long($user_ip);

if ( $long_user_ip > $long_first && $long_user_ip < $long_second ) {
		echo 'Preved \0/';
}
?>
Специально расписал все подробно, чтобы было ясно что к чему.
 
В виде готовой для использования ф-ции:
PHP:
<?php
function inRange($myIp, $ipFrom, $ipTo) {
        $myIp = sprintf('%u', ip2long($myIp));
        $tmp = $myIp & 0xff;
        if (!$tmp || $tmp==255) {
                return false;
        }
        $ipFrom = sprintf('%u', ip2long($ipFrom));
        $ipTo = sprintf('%u', ip2long($ipTo));
        if ($myIp>$ipFrom && $myIp<$ipTo) {
                return true;
        }
        return false;
}
?>
 
Специально расписал все подробно, чтобы было ясно что к чему.

Все супер, только есть маленькая проблема, код не матчит адреса на границах области. Предлагаю готовую функцию, учитывающую границы, с примером.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху