За последние 24 часа нас посетил 55321 программист и 1725 роботов. Сейчас ищут 875 программистов ...

ограничение доступа по ip

Тема в разделе "PHP для новичков", создана пользователем serj011, 6 окт 2012.

  1. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Подскажите, как разрешить доступ к странице, только заранее заданным ip адресам?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    кодом?
     
  3. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    ну да, в самом файле
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $_SERVER['REMOTE_ADDR']
     
  5. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    что то не то(
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    что "не то"?
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. <?php
    2. $allowed = array(
    3.     '127.0.0.1',
    4.     '213.85.81.36',
    5.     '111.22.33.4'
    6. );
    7. if(!in_array($_SERVER['REMOTE_ADDR'], $allowed)) {
    8.     echo('Извини, тебе сюда нельзя');
    9.     exit;
    10. }
    11. // ...
    12. echo('Спрятанное содержимое');
    13. ?>
     
  8. Gold Dragon

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

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    Для получения IP я использую вот эту функцию... Одного REMOTE_ADDR иногда мало
    Код (Text):
    1. /**
    2.  * @static Получение IP-адреса
    3.  * @return string - IPv4
    4.  */
    5. function getIP()
    6. {
    7.     $serverVars = array("HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED", "HTTP_FORWARDED_FOR", "HTTP_FORWARDED", "HTTP_VIA", "HTTP_X_COMING_FROM", "HTTP_COMING_FROM", "HTTP_CLIENT_IP",
    8.                         "HTTP_XROXY_CONNECTION", "HTTP_PROXY_CONNECTION", "HTTP_USERAGENT_VIA");
    9.     foreach ($serverVars as $serverVar) {
    10.         if (!empty($_SERVER) && !empty($_SERVER[$serverVar])) {
    11.             $proxyIP = $_SERVER[$serverVar];
    12.         } elseif (!empty($_ENV) && isset($_ENV[$serverVar])) {
    13.             $proxyIP = $_ENV[$serverVar];
    14.         } elseif (@getenv($serverVar)) {
    15.             $proxyIP = getenv($serverVar);
    16.         }
    17.     }
    18.     if (!empty($proxyIP)) {
    19.         $isIP = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxyIP, $regs);
    20.         $long = ip2long($regs[0]);
    21.         if ($isIP && (sizeof($regs) > 0) && $long != -1 && $long !== false) {
    22.             return $regs[0];
    23.         }
    24.     }
    25.     return $_SERVER['REMOTE_ADDR'];
    26. }
    Она должна максимально правильно всё определять. Вдруг пригодится ;)
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Переменным $_SERVER['HTTP_*'] (всяким там $_SERVER['HTTP_X_FORWARDED_FOR']) - нельзя доверять. Они очень легко подделываются. Использовать их для разграничения прав небезопасно...
     
  10. serj011

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

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Косвенно то))) но к сути вопроса отношения не имеет.

    $_SERVER['REMOTE_ADDR'] - эта переменная просто определяет ip.

    sobachnik, как всегда спасибо, вроде то что нужно, нужно потестировать)

    Gold Dragon, спасибо, может и пригодится, отложу до лучших времен)))
     
  11. Gold Dragon

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

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    Согласен (частично) ))) Но контроль только по IP сам по себе очень и очень небезопасен
     
  12. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Если у пользователя свой реальный статический ip ("белый", не динамический, и не общий на какую-то городскую сеть, например) - то вполне даже безопасно. Во всяком случае я не знаю, как можно подделать то, что будет в $_SERVER['REMOTE_ADDR'].
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты просто хотел чтобы за тебя сделали готовое решение.
    а $_SERVER['REMOTE_ADDR'] не то что косвенно, а единственное, что имеет отношение к делу.