Задача определения IP адреса пользователя достаточно часто встречается (например, для создания записи в логе), поэтому привожу в упрощенном виде свой метод.
/**
* Получить данные из массива SERVER
* @param null $key
* @param null $default
* @return null
*/
function getServer($key = null, $default = null) {
if (null === $key) {
return $_SERVER;
}
return (isset($_SERVER[$key])) ? $_SERVER[$key] : $default;
}
/**
* Получить IP адрес клиента
* @param boolean $proxy
* @return string
*/
function getClientIp($proxy = true) {
if ($proxy && getServer('HTTP_CLIENT_IP') != null) {
$ip = getServer('HTTP_CLIENT_IP');
} else if ($proxy && getServer('HTTP_X_FORWARDED_FOR') != null) {
$ip = getServer('HTTP_X_FORWARDED_FOR');
} else {
$ip = getServer('REMOTE_ADDR');
}
return $ip;
}
Не делайте так! Доверяйте лишь заголовку REMOTE_ADDR. Пруфлинк
Источник: https://www.kobzarev.com/programming/get-client-ip/