Обычно это не относится к соединениям с локального хоста, но вы должны учитывать прокси.Если удаленный конец использует прокси-сервер HTTP, $_SERVER['REMOTE_ADDR']
будет содержать IP-адрес этого прокси, а не IP-адрес самого клиента.
Однако, если это прокси-сервер с отключенными настройками конфиденциальности,тогда вы можете получить IP-адрес клиента, используя следующий фрагмент:
// will be set by the proxy if no privacy is enabled:
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if(isset($_SERVER['REMOTE_ADDR'])) {
return $_SERVER['REMOTE_ADDR'];
}
Но если ваш клиент использует прокси-сервер HTTP с включенной конфиденциальностью, у вас не будет возможности получить IP-адрес клиента..
Подсказка по безопасности (спасибо @deceze) Обратите внимание, что если вы используете заголовок HTTP_X_FORWARDED_FOR
, злоумышленникам будет легко подделать их IP.Хотя это возможно и с использованием других методов, с заголовком HTTP_X_FORWARDED_FOR
это будет очень просто.Вы были предупреждены.Но в любом случае веб-приложение никогда не должно использовать информацию об IP для безопасности, поэтому это просто примечание