Забанить подсеть.

Discussion in 'PHP' started by serg_1966, 8 Aug 2009.

  1. serg_1966

    serg_1966 New Member

    Joined:
    2 Jul 2008
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    поделитесь скриптом.
    Нужно забанить 10 посетей.
    в файл закидаю ІР таким образом :
    10.0.
    10.1.
    10.2.
    192.168.
    172.16.
    і т.д.
    Как реализовать бан на РНР.
    Очень нужно. Помогите.
     
  2. serg_1966

    serg_1966 New Member

    Joined:
    2 Jul 2008
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Или реализовать БАН всех кроме 2 ,3 ІР адресов.
     
  3. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    http://ru.php.net/manual/en/function.ip2long.php
    http://ru.php.net/manual/en/function.long2ip.php

    с обычными цифровыми значниями ипов я уже думаю поймёшь как поступить)
     
    1 person likes this.
  4. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Самый простй способ создаем ban.php
    PHP:
    <?php
    $ip 
    file('ban_ip.txt');
    $count count($ip);
    for (
    $i=0;$i $count;$i++) {
    if(
    $ip[trim($i)] == $_SERVER['REMOTE_ADDR'])
    {
        echo 
    'BANNED';
        exit;
    }
    }
    ?>
    И инклудим его на каждую страничку где нужно проверять. База IP хранится в ban_ip.txt

    Ну а вообще лучше всего почитай про .htaccess
     
    _________________________
  5. altblitz

    altblitz Elder - Старейшина

    Joined:
    5 Jun 2009
    Messages:
    3,697
    Likes Received:
    3,139
    Reputations:
    236
    да. расово верно и даже православно.
     
  6. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    А если надо забанить диапазон ипов?) А если это диапазон большой?) чё каждый ип забивать отдельно?) вы товарищ извращенец)
     
  7. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Я предложил самый примитивный способ, выложил бы лучше, чем замечания делать =)
    Для бана подсети нужно заносить в тхт в виде: 127.0.0.* а потом сравнивать по регулярному выражению, с условием что * - это любое число в диапе 0-255
     
    _________________________
  8. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Если надо на PHP:
    ban.php
    PHP:
    <?php

         $file 
    array_map('trim'file('networks.txt')); #загоняем файл в массив
         
    foreach ($file as $expression#цикл - обработка каждого элемента массива

         
    {
             
    $expression str_replace('.''\.'$expression);    #подгоняем строку под регулярку
             
    $expression str_replace('*''(.*)'$expression); #подгоняем строку под регулярку
             
    if (preg_match('#' $expression '#'$_SERVER['REMOTE_ADDR'])) #проверяем айпи по регулярке и в случае удачи
             
    {
                 
    header('HTTP/1.1 403 Forbidden'); #отправляем заголовок 403 и
                 
    die("<title>BANNED NETWORK</title>\r\n\r\n<h1>Banned network!</h1>"); #выводим, что подсеть забанена
             
    }
         }

    ?>
    networks.txt
    Code:
    127.*.0.1
    255.*.*.*
    
     
    1 person likes this.
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    в .htaccess лучше, имхо:

    http://tools.dynamicdrive.com/userban/
     
  10. fl00der

    fl00der Moderator

    Joined:
    17 Dec 2008
    Messages:
    1,028
    Likes Received:
    310
    Reputations:
    86
    Короче order allow,deny
    deny from 10.0
    deny from 10.1
    ...
    allow from all
    Это пропиши в .htaccess, ну только вместо многоточия свои подсети. Или через iptables, если юникс на борту, не помню уже, как там, RTFM.
     
    _________________________
    #10 fl00der, 8 Aug 2009
    Last edited: 8 Aug 2009
  11. serg_1966

    serg_1966 New Member

    Joined:
    2 Jul 2008
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Всем спасибо. Розобрался !