За последние 24 часа нас посетили 16572 программиста и 1681 робот. Сейчас ищут 946 программистов ...

Закрывая доступ по диапазну ip столкнулся с проблеммой.

Тема в разделе "PHP для новичков", создана пользователем Disabled, 9 июл 2008.

  1. Disabled

    Disabled Активный пользователь

    С нами с:
    20 дек 2007
    Сообщения:
    7
    Симпатии:
    0
    Всем доброго времени суток. Вообщем я тут столкнулся с проблеммой такого характера.
    Есть двигатель трекера от :

    TBDev

    Вчера решил ограничить полностью доступ диапазонам ip.

    array('0.0.0.0','2.255.255.255'),
    array('62.221.64.0','62.221.95.255'),
    array('77.235.96.0','77.235.127.255'),
    array('80.94.240.0','80.94.255.255'),
    array('217.19.208.0','217.19.223.255'),
    array ('127.0.0.1', '127.255.255.255')

    Вот сам скриптик который это делает
    Код (Text):
    1.  
    2.   error_reporting(E_ALL);
    3.  ini_set('display_errors','On');
    4.  
    5. function validip($ip) {
    6.     if (!empty($ip) && $ip == long2ip(ip2long($ip)))
    7.     {
    8.        
    9.         $reserved_ips = array (
    10.                 array('0.0.0.0','2.255.255.255'),
    11.                 array('62.221.64.0','62.221.95.255'),
    12.                 array('77.235.96.0','77.235.127.255'),
    13.                 array('80.94.240.0','80.94.255.255'),
    14.                 array('217.19.208.0','217.19.223.255'),
    15.         array ('127.0.0.1', '127.255.255.255')
    16.                  
    17.                        
    18.         );
    19.  
    20.         foreach ($reserved_ips as $r) {
    21.                 $min = ip2long($r[0]);
    22.                 $max = ip2long($r[1]);
    23.                 if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;
    24.         }
    25.         return true;
    26.     }
    27.     else return false;
    28. }
    29. $ip_user = $_SERVER['REMOTE_ADDR'];
    30. if(!validip($ip_user)) {
    31. echo "<br><b><center>Ваш IP :  $ip_user</b></center></br>";
    32. echo "<br><b><center>Данный тип IP адресов заблокирован.</b></center></br>";
    33. }else{
    34. header ("location: index.php");
    35. }
    То есть для этого диапазано доступ закрыт. Но проблемма в том что доступ закрыт только на тот файл который в else{
    header ("location: index.php");
    } То есть index.php
    Получается на все остальные страницы сайта зайти можно через ссылки спокойно. Инклудить пробовал каждую страницу, но всё равно сначало сверху было написано Ваш ip : x.x.x.x заблокирован. а ниже открывалась страница .

    2. В принципе так же можно и перекрыть воздух при помощи .htacces , но та информация которая мне попалась на глаза не удовлетворила моих потребностей (не работало). Как вариант где то я упустил важный момент.

    3. Если кто понимает о чём я , поможите люди добрые ). Заранее благодарен.
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    exit после проверки.
     
  3. Disabled

    Disabled Активный пользователь

    С нами с:
    20 дек 2007
    Сообщения:
    7
    Симпатии:
    0
    Благодарствую, сейчас пойду пробовать. :)
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Поставь в подпись :)