За последние 24 часа нас посетил 17421 программист и 1612 роботов. Сейчас ищут 840 программистов ...

Как узнать IP-адрес? (Оператор или функция в PHP для этого)

Тема в разделе "PHP для новичков", создана пользователем alexphp, 20 янв 2020.

  1. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    РНР-программа выполняется на сервере. Кто-то удаленно заходит на этот сервер для выполнения программы. Как узнать (в программе РНР), с какого IP-адреса был осуществлен вход на сервер?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.853
    Симпатии:
    748
    Адрес:
    Татарстан
    PHP:
    1. function GetIP() {
    2.   if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    3.     $ip = $_SERVER['HTTP_CLIENT_IP'];
    4.   } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    5.     $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    6.   } else {
    7.     $ip = $_SERVER['REMOTE_ADDR'];
    8.   }
    9.   return $ip;
    10. }
     
    alexphp нравится это.
  3. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    IP гарантированно должен быть в $_SERVER['REMOTE_ADDR']
    в других случаях может быть и несколько IP через запятую и не IP вовсе. :)
     
    alexphp нравится это.
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.576
    Симпатии:
    1.759
    @AlexandrS Если nginx нормально настроен
     
    alexphp нравится это.
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    $_SERVER['REMOTE_ADDR'];

    only
     
    alexphp нравится это.
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    И вот мы такие подключаем cloudflare и "Use HTTP_CF_CONNECTING_IP instead of REMOTE_ADDR". Та-дам ))

    p.s. ТС, можно узнать ip с которого идет запрос на сервер, но это может быть и ещё один сервер в цепочке и промежуточное прокси и vpn и всё что угодно. Короче, если ты не в интранет всё это запускаешь (где заранее известна топология сети), то идентифицировать посетителя по ip такое себе занятие.
     
    Roman __construct и alexphp нравится это.
  7. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    А каким тогда образом можно идентифицировать посетителя? Вот, например, на форумах интернета как это устроено? Чтобы, к примеру, пользователь не мог одновременно создать 20 аккаунтов?
     
  8. lastdays

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

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Также устроено. IP в наше время изменить в один щелчок пальцем. Никуда от дублированных акков не денешься, если это необходимо клиенту. Смирись)
     
    alexphp и Roman __construct нравится это.
  9. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    alexphp, Roman __construct и AlexandrS нравится это.
  10. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Если тебе не нужно, чтоб кто-то посторонний заходил туда, куда не нужно, то самое простое это не искать того, кто заходит, а просто разрешить IP или диапазоны тех, кому это можно делать.
    Я просто не знаю какая тобой преследуется цель. IP - это не панацея, как и разные связки IP + UserAgent + COOKIE и т.п. всё это легко меняется.

    Так что думаю было бы более точно указать, какую ты преследуешь цель, для выяснения IP.
     
    alexphp нравится это.