Intereting Posts
Yii Записывает таблицу, но не все выбранные данные извлекаются Создание и приглашение группы к событию через график api Мой скрипт PayPal неожиданно прекратил проверку SSL-сертификата Как добавить двойную кавычку в значениях внутри переменной PHP и преобразовать ее в массив Новая страница WordPress перенаправляет на старую страницу 404 Ошибка QuickBooks API при обновлении show div после регистра процесса, woocommerce Как использовать драйвер MySQLi в Codeigniter php reflection получает свойства без получения свойств базового класса Обработка нескольких загрузок файлов в Sonata Admin Bundle как получить подробную информацию о заказе через продавца flipkart api в php Хранить функции оболочки bash между запросами shell_exec () WordPress, вставляющий открывающий тег <p> внутри моего короткого кода Управляемая событиями архитектура и перехватчики в PHP Не удалось выбрать результат из результатов поиска select2

$ _SERVER указывает IP-адрес сервера, а не IP-адрес посетителя

Я пытаюсь отслеживать IP-адреса посетителей. При использовании $_SERVER["REMOTE_ADDR"] я получаю IP-адрес сервера, а не посетителя. Я попробовал это на нескольких компьютерах в разных местах, и все они привели к тому же самому IP. Есть ли некоторые настройки PHP / сервера, которые могут повлиять на это?

REMOTE_ADDR нельзя доверять.

В любом случае, попробуйте

 $ipAddress = $_SERVER['REMOTE_ADDR']; if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { $ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])); } 

Изменить: Кроме того, включен ли маршрутизатор вашего сервера для перенаправления портов? Возможно, что он возится с пакетами.

При использовании $ _SERVER ["REMOTE_ADDR"] я получаю IP-адрес сервера, а не посетителя.

Тогда что-то не так, или странно, с вашей конфигурацией.

  • Вы используете какой-то обратный прокси? В этом случае предложение @ simshaun может работать.

  • У вас есть что-то еще необычное в конфигурации вашего веб-сервера?

  • Можете ли вы показать код PHP, который используете?

  • Можете ли вы показать, как выглядит адрес. Является ли это локальным или интернет-адресом?

$_SERVER['REMOTE_ADDR'] указывает IP-адрес, с которого запрос был отправлен на веб-сервер. Обычно это адрес посетителя, но в вашем случае это похоже на то, что у веб-сервера есть какой-то прокси-сервер, который перехватывает запросы, поэтому на веб-сервер он выглядит так, как будто запросы происходят оттуда.

Больше не смотрите на то, что IP-адреса не заданы в ожидаемом заголовке. Просто выполните следующие действия, чтобы проверить все переменные сервера и выяснить, какой из них подходит для вашего случая:

 print_r($_SERVER); 

Замена:

 $_SERVER["REMOTE_ADDR"]; 

С:

 $_SERVER["HTTP_X_REAL_IP"]; 

Работал для меня.