Определение реального IP-адреса пользователя

Часто, в особенности от новичков, приходится слышать вопрос об определении IP-адреса пользователся. И примерно также часто они получают ответ, что панацея это $_SERVER[‘REMOTE_ADDR’]. Но если пользователь пользуется прокси-сервером, как например я, когда на работе, то данная переменная вернет лишь IP проксика.

Для исключения такого варианта, я использую следующую функцию:

function getRealIpAddr()
{
  if (!empty($_SERVER['HTTP_CLIENT_IP']))
  {
    $ip=$_SERVER['HTTP_CLIENT_IP'];
  }
  elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
  {
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
  }
  else
  {
    $ip=$_SERVER['REMOTE_ADDR'];
  }
  return $ip;
}

Ранее код этой функции можно было увидеть в посте об определении географических данных пользователя по IP, но для того, чтобы давать ответ на поднятый тут вопрос ссылкой без лишней информации, я решил выделить это в отдельный пост, да простят меня мои подписчики.

Ну и алаверды:

Если вдруг, Вам понадобится размещать информацию полученную от скрипта в базе данных, то скорее всего, очень пригодится хороший sql server, который будет играть ключевую роль в скорости добавления и изменения информации.

Определение реального IP-адреса пользователя: 11 комментариев

  1. первый понравился — этот думаю не хуже.

  2. Теперь мне стало всё ясно, благодарю за нужную информацию.

    • В принципе не должо, у меня все работает… только если ваш юзер не подделывает переменные. К слову, все что начинается с HTTP_ можно подделать, например $_SERVER[‘HTTP_X_FORWARDED_FOR’] и $_SERVER[‘HTTP_CLIENT_IP’]

Обсуждение закрыто.