Pegando o IP do usuário com PHP

08/01/2018 21:47:45

É muito comum no desenvolvimento de um sistema ou site a necessidade de registrar o IP do usuário por diversos motivos desde segurança a comodidade e interação com o usuário. A boa notícia para os programadores em PHP é que existe uma função nativa para essa ação, basta digitar:

$_SERVER['REMOTE_ADDR'];

Mas caso o usuário esteja usando um proxy o IP que ira aparecer será o do proxy, mas em casos onde ele está usando o CloudFlare, Incapsula e Sucuri podemos usar os seguintes códigos.

Se estiver usando CloudFlare:

$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];

Se estiver usando Incapsula:

$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_INCAP_CLIENT_IP'];

Se estiver usando o Sucuri:

$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_SUCURI_CLIENTIP'];

Segue uma função onde em php para tentar pegar o IP real do usuário mesmo se ele tiver usando proxy, mas como sabemos se o proxy tiver uma boa proteção não tem como saber o ip real do usuário.

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;
}

Avatar de KéciaPor: Kécia dia: 08/01/2018 21:47:45em: PHPIP do usuário com PHP,capturando o ip com php, IP com php - 2962 Visitas