Мне нужно получить публичный IP-адрес удаленной системы в php. Я попыталсяКак получить общедоступный IP-адрес клиента в php
$_SERVER['REMOTE_ADDR']
getenv('REMOTE_ADDR');
но всегда возвращается частный IP. Помогите исправить это.
Мне нужно получить публичный IP-адрес удаленной системы в php. Я попыталсяКак получить общедоступный IP-адрес клиента в php
$_SERVER['REMOTE_ADDR']
getenv('REMOTE_ADDR');
но всегда возвращается частный IP. Помогите исправить это.
Попробуйте это:
$ip = !empty($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']);
Внимание: следует расширить и дезинфицировать, так как заголовки могут быть легко манипулировать.
Когда я пытаюсь $ _SERVER ["HTTP_X_FORWARDED_FOR"] в онлайн-phpfiddle, он возвращает как закрытый, так и открытый ip, но на моем сервере пуст, есть ли что-то, что нужно сделать в php ini файл ?? –
private function getIP()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = $_SERVER['REMOTE_ADDR'];
if(filter_var($client, FILTER_VALIDATE_IP))
{
$ip = $client;
}
elseif(filter_var($forward, FILTER_VALIDATE_IP))
{
$ip = $forward;
}
else
{
$ip = $remote;
}
return $ip;
}
echo getIP();
Пробовал ли вы '$ _SERVER [" HTTP_X_FORWARDED_FOR "]'? –
Возможный дубликат [Как получить IP-адрес клиента в PHP?] (Http://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php) – Pindo
Ya i try $ _SERVER ['HTTP_X_FORWARDED_FOR'] также @Michelem –