На моем рабочем месте я сохраняю журнал для пользователей, когда они посетили мой сайт (например, логин, выход из системы) с их IP-адресом. Я использую $_SERVER['REMOTE_ADDR']
для получения IP-адреса. Он хранил точный IP-адрес посетителя, но внезапно эта переменная начала возвращаться 10.10.10.10
для всех моих клиентов.
Это происходит с 01-31-2011.
Каковы могут быть причины?
Информация о сервере: LAMP EDIT: теперь у меня есть функция, которая также возвращается так же 10.10.10.10
function GetIP() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip); }
благодаря
Этот IP-адрес IANA «Черная дыра» – никто его не использует, и он не считается действительным общедоступным IP-адресом. Как правило, он используется в коде в качестве заполнителя для IP-адреса или для издевательства над кодом.
Вы уверены, что вы не использовали фрагмент кода где-то, что перезаписывает это значение? Проверьте случайность, if($_SERVER['REMOTE_ADDR'] = '10.0.10.10')
(обратите внимание на знак единого знака). Короче говоря, этот адрес не может быть законным.
Однако он является законным для использования в качестве внутреннего IP-адреса. Как было предложено другими, это может быть результатом внутренней маршрутизации запросов. Проконсультируйтесь с хостом, чтобы узнать, были ли какие-либо изменения в структуре сети.
Если вы (или ваш провайдер) добавили балансировщик нагрузки, тогда REMOTE_ADDR отобразит IP-адрес балансира. Чтобы получить IP-адреса пользователей, вместо этого используйте REMOTE_IP