1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

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

Тема в разделе "Web Coding", создана пользователем RusBiT, 27 окт 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. RusBiT

    RusBiT Постоялец

    Регистр.:
    29 мар 2007
    Сообщения:
    102
    Симпатии:
    3
    Доброго дня.
    Мне нужно узнать IP адрес, и если адрес входит в диапазон 192.168.0.1 - 192.168.2.255 , то напечатать текст ПРЕВЕД (ну это для примера)
     
  2. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    На каком языке-то?
     
  3. RusBiT

    RusBiT Постоялец

    Регистр.:
    29 мар 2007
    Сообщения:
    102
    Симпатии:
    3
    На php. Ну или хотя бы просто алгоритм
     
  4. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    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/';
    }
    ?>
    Специально расписал все подробно, чтобы было ясно что к чему.
     
    RusBiT нравится это.
  5. Nemesis

    Nemesis Прохожие

    В виде готовой для использования ф-ции:
    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;
    }
    ?> 
     
  6. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Все супер, только есть маленькая проблема, код не матчит адреса на границах области. Предлагаю готовую функцию, учитывающую границы, с примером.

    PHP:
    function inRange($user_ip,$first_ip,$last_ip)
    {
        
    $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 )
        {
            return 
    true;
        }
        return 
    false;
    }

    $from '192.168.1.1';
    $to '192.168.2.255';

    $notInRange  inRange('192.168.3.1',$from,$to);
    $onThreshold inRange('192.168.1.1',$from,$to);
    $inRange inRange('192.168.2.1',$from,$to);

    echo 
    "Not in range ";
    var_dump($notInRange);
    echo 
    "On treshshold";
    var_dump($onThreshold);
    echo 
    "In range";
    var_dump($inRange);

     
    Nafania нравится это.
  7. Nafania

    Nafania

    Регистр.:
    24 мар 2007
    Сообщения:
    167
    Симпатии:
    46
    Да, спасибо, чуток ошибся.
     
Статус темы:
Закрыта.