LooZHp LooZHp  • 03.06.16 14:30

[Tutorial] Obter ip de um usuário do seu site. Empty [Tutorial] Obter ip de um usuário do seu site. 03.06.16 14:30

Reputação da mensagem: 100% (1 votos)
Olá,
Muitos desenvolvedores utilizam a função para obter o endereço de IP do cliente usando PHP:

Código:
SERVER['REMOTE_ADDR'];

$_SERVER é um array contendo informação como cabeçalhos, paths, e localizações do script. As entradas neste array são criadas pelo servidor web. Não há garantia que cada servidor web proverá algum destes.
No entanto, em alguns casos, o endereço de IP obtido não é o real. Recentemente esta função retornava o meu endereço de IP local (192.168.1.130) em vez do meu endereço de IP público que pode ser facilmente obtido pelo www.meuip.com.br. Por outro lado, já na minha residência, retornava o IP corretamente. Como não podemos ter funções que, ora funcionam e, ora não funcionam, resolvi pesquisar e a solução foi a seguinte:

Código:
function get_client_ip() {
     $ipaddress = '';
     if (getenv('HTTP_CLIENT_IP'))
         $ipaddress = getenv('HTTP_CLIENT_IP');
     else if(getenv('HTTP_X_FORWARDED_FOR'))
         $ipaddress = getenv('HTTP_X_FORWARDED_FOR'");
     else if(getenv('HTTP_X_FORWARDED'))
         $ipaddress = getenv('HTTP_X_FORWARDED');
     else if(getenv('HTTP_FORWARDED_FOR'))
         $ipaddress = getenv('HTTP_FORWARDED_FOR');
     else if(getenv('HTTP_FORWARDED'))
        $ipaddress = getenv('HTTP_FORWARDED');
     else if(getenv('REMOTE_ADDR'))
         $ipaddress = getenv('REMOTE_ADDR');
     else
         $ipaddress = 'UNKNOWN';

     return $ipaddress;
}




O getenv retorna o nome da variável de ambiente varname, ou FALSE em caso de erro.
ou
Código:
function get_client_ip() {
     $ipaddress = '';
     if ($_SERVER['HTTP_CLIENT_IP'])
         $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
     else if($_SERVER['HTTP_X_FORWARDED_FOR'])
         $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
     else if($_SERVER['HTTP_X_FORWARDED'])
         $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
     else if($_SERVER['HTTP_FORWARDED_FOR'])
         $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
     else if($_SERVER['HTTP_FORWARDED'])
         $ipaddress = $_SERVER['HTTP_FORWARDED'];
     else if($_SERVER['REMOTE_ADDR'])
         $ipaddress = $_SERVER['REMOTE_ADDR'];
     else
         $ipaddress = 'UNKNOWN';

     return $ipaddress;
}


Enfim, funcionalidade de obtenção do real IP do usuário funcionando corretamente em minhas aplicações.

Nota:


Esta função não funciona no modo ISAPI. O Internet Server Application Programming Interface — ISAPI é um protocolo usado por computadores baseados no Windows para rodar uma aplicação dinâmica carregando um módulo externo no espaço de endereçamento do processo do webserver.





Bom pessoal tutorial breve, espero ter ajudado alguns de vocês!




Créditos: Rodrigo Calado

ThuG - LovE ThuG - LovE  • 03.06.16 14:51

[Tutorial] Obter ip de um usuário do seu site. Empty Re: [Tutorial] Obter ip de um usuário do seu site. 03.06.16 14:51

Ótimo tutorial, irá ajudar muitos membros que precisam.

Pesc Pesc  • 03.06.16 15:13

[Tutorial] Obter ip de um usuário do seu site. Empty Re: [Tutorial] Obter ip de um usuário do seu site. 03.06.16 15:13

Belo tutorial, vai ajudar muita gente que precisa, obrigado por compartilhar.
Permissões neste sub-fórum
Não podes responder a tópicos

BH Servers

Recomendamos a BH Servers com proteção DDOS gratuita em Cloud Server de alta performance. Entrega imediata.