За последние 24 часа нас посетили 45203 программиста и 1811 роботов. Сейчас ищут 772 программиста ...

Возможно ли $_SERVER['REMOTE_ADDR'] == '11.11.11.11-17'

Тема в разделе "PHP для новичков", создана пользователем justc, 16 фев 2018.

  1. justc

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

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    Возможно ли проверить на диапазон ip

    if ($_SERVER['REMOTE_ADDR'] == '11.11.11.11-17') {}

    или придется каждый отдельно проверять?
    --- Добавлено ---
    вот тут http://ip2cidr.com/

    11.11.11.11/32
    11.11.11.12/30
    11.11.11.16/31


    можно брать любой?
    и здесь только 7 ip адресов получается, не больше не меньше?))
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    justc нравится это.
  3. justc

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

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    хм, вот уж... ))) совсем мозги уже не работают

    спасибо
    --- Добавлено ---
    сказал я... и тупо сделал для каждого ip проверку))
    ну нафиг такой фигней страдать, я думал есть что простое и красивое
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
  5. justc

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

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    единственный момент, что насчет скорости?

    у меня получилось всего 10 ip (7 отличаются только последними цифрами)

    то есть

    Код (Text):
    1. if (
    2. $_SERVER['REMOTE_ADDR'] == '12.11.11.1' ||
    3. $_SERVER['REMOTE_ADDR'] == '13.11.11.2' ||
    4. $_SERVER['REMOTE_ADDR'] == '14.11.11.3' ||
    5. $_SERVER['REMOTE_ADDR'] == '11.11.11.4' ||
    6. $_SERVER['REMOTE_ADDR'] == '11.11.11.5' ||
    7. $_SERVER['REMOTE_ADDR'] == '11.11.11.6' ||
    8. $_SERVER['REMOTE_ADDR'] == '11.11.11.7' ||
    9. $_SERVER['REMOTE_ADDR'] == '11.11.11.8' ||
    10. $_SERVER['REMOTE_ADDR'] == '11.11.11.9' ||
    11. $_SERVER['REMOTE_ADDR'] == '11.11.11.10'
    12. )
    13. {}
     
  6. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    PHP:
    1. $ips = ["12.11.11.1",
    2.         "12.11.11.2",
    3.         "12.11.11.3"];
    4. if (in_array($_SERVER['REMOTE_ADDR'], $ips)) {}
    красивей жи
     
    justc нравится это.
  7. justc

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

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    сделал через strpos($_SERVER['REMOTE_ADDR'], '11.11.11.1')
    мне тут точность не нужна, главное чтобы мои ip попадали, к тому же реальные ip различаются всего на одну последнюю цифру в конце (11.11.11.11 ... 11.11.11.12 ...)
     
  8. justc

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

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    @acho, я вот задумался, что будет быстрее твой вариант с массивом всех ip
    или мой вариант

    Код (Text):
    1. if
    2.  
    3. (
    4. $_SERVER['REMOTE_ADDR'] == '12.11.11.10' ||
    5. $_SERVER['REMOTE_ADDR'] == '13.11.11.10' ||
    6. $_SERVER['REMOTE_ADDR'] == '14.11.11.10'  ||
    7. strpos($_SERVER['REMOTE_ADDR'], '11.11.11.1')
    8. )
    у меня три совершенно непохожих ip и 7 различающихся по последней цифре
    --- Добавлено ---
    думается мне, что массив и красивше и быстрее...
     
  9. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    В любом случае я не думаю, что на скорость конкретно в данном примере надо обращать внимания. Это не такая большая операция, чтобы разницу во времени увидеть невооружённым глазом.
    Но можешь проверить)
     
  10. justc

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

    С нами с:
    27 сен 2015
    Сообщения:
    130
    Симпатии:
    0
    ну у меня эта проверка идет перед кэшем, для обхода оного для нужных ip
    то есть перед загрузкой каждой страницы

    вот и не хочется совсем лишних задержек

    все же воспользуюсь вариантом с массивом, красиво, точно
    и я надеюсь даже быстрее
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    адрес ipv4 состоит из четырёх байт.
    проверить, что он принадлежит какому-то диапазону можно просто заксорив его. и работает это со скоростью света.