Получить IP-адрес клиента в переполнении стека

Я использую следующую функцию для получения IP-адреса клиента.

function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else

if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];

else
$ipaddress = 'UNKNOWN';

return $ipaddress;
}

Но я проверяю результаты, которые дают мне IP-адрес, отличный от IP-адреса моей машины на сервере (я думаю, что это IP-адрес сервера моей организации). Любое решение, которое я могу получить, — это реальный IP-адрес моего клиента.
Редактировать для возможного дубликата: я прочитал ответ возможного дубликата вопроса.
Моя проблема в том, что он не дает мне IP-адрес моей машины.

Редактировать-2 Живая ссылка
http://stashad.com/nodegates/voter.php?incr=blockvotes

0

Решение

попробуйте этот фрагмент.,

если ваш компьютер является локальным или подключен к сети, он показывает свой оригинальный IP

function getIP($ip = null, $deep_detect = TRUE){
if (filter_var($ip, FILTER_VALIDATE_IP) === FALSE) {
$ip = $_SERVER["REMOTE_ADDR"];
if ($deep_detect) {
if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP))
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP))
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
return $ip;
}

использование

echo getIP();

если для параметра deep_detect установлено значение TRUE, проверьте, перенаправлен ли IP-адрес клиента или нет.

echo getIP(null,true);
0

Другие решения

Ваш компьютер не подключается напрямую к серверу; это соединение через посредническое устройство — что-то вроде роутера или шлюза в большой компании.

Сервер обычно может получить только IP-адрес подключенного устройства. В некоторых случаях такие вещи, как балансировщики нагрузки, добавляют заголовки в запрос, которые включают исходный IP-адрес (например, HTTP_X_FORWARDED_FOR) но я не думаю, что они обычно включают частный IP-адрес компьютера, который сделал запрос.

Если вы посмотрите на диаграмму ниже, вы — один из компьютеров, но маршрутизатор устанавливает фактическое соединение с сервером, а не с самим компьютером.

Диаграмма сети

-1

По вопросам рекламы [email protected]