Localização do usuário via Geo IP

  • Autor do post:
  • Categoria do post:PHP DEV
Localização do usuário via Geo IP

Bem, quem nunca durante uma visita à blogs de downloads
diversos nunca se deparou com aqueles pop-up's onde são
mostrados perfis de usuários com foto e que residem em nossa
cidade, geralmente são pop-up's de sites de relacionamento,
enfim, a princípio achamos estranha a possibilidade de um
site de outro país nos mostrar usuários de nossa cidade,
chega claro, à ser duvidoso, acontece que é possível saber
a localização geográfica através do IP.
Neste exemplo vamos mostrar a localização lado cliente.
sc
Localização Geográfica via IP (Geo IP)
Existem diversas API's disponíveis na internet para
realizarmos esse procedimento, irei mostra uma delas.

O código é muito simples, observe abaixo:
<script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script>
(function(){

 var info = document.getElementById('info');
 var lat = geoip_latitude();
 var lon = geoip_longitude();
 var city = geoip_city();
 var out = '<h3>Informações para seu IP</h3>'+
 '<ul>'+
 '<li>Latitude: ' + lat + '</li>'+
 '<li>Longitude: ' + lon + '</li>'+
 '<li>Cidade: ' + city + '</li>'+
 '<li>Cód. Região: ' + geoip_region() + '</li>'+
 '<li>Região: ' + geoip_region_name() + '</li>'+
 '<li>Código do País: ' + geoip_country_code() + '</li>'+
 '<li>Nome do País: ' + geoip_country_name() + '</li>'+
 '</ul>';
 info.innerHTML = out;
 var url = 'http://maps.google.com/maps/api/staticmap?center='+
 lat+','+lon+'&sensor=false&size=300x300&maptype=roadmap&key='+
 'ABQIAAAAijZqBZcz-rowoXZC1tt9iRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQQBCa'+
 'F1R_k1GBJV5uDLhAKaTePyQ&markers=color:blue|label:I|'+lat+
 ','+lon+'6&visible='+lat+','+lon+'|'+(+lat+1)+','+(+lon+1);
 var map = document.getElementById('map');
 map.innerHTML = '<img src="'+url+'" alt="'+city+'">';

})();
</script>

Tente visualizar seus dados geográficos neste exemplo
Neste caso o download do exemplo consiste apenas em você visualizar o código-fonte do exemplo e salva-lo, uma vez que é puro html/css/js.
API: http://j.maxmind.com

Até a próxima.

Este post tem 25 comentários

  1. Webster

    Bacanna isto. Há muito tempo vinha procurando um script assim. Parabéns!

  2. Myrhay

    Manow show de bola, vc é super…

    Valew pelas ajuda que tens nos dado.

    Abraxao

  3. Robson

    Difícil encontrar um blog com conteúdo legal e objetivo.
    Você está de parabéns!

  4. Marcio Sales

    Olá, amigo.. gostei muito sa sua dica.. se puder visitar o site, vai no menu/oficina_gyk/mural da humanidade..
    é uma aplicação bem bacana que ainda tow dando uma arrumada, devido os problemas com z-index e os inumeros navegadores. Qria usar seu exemplo para por na pagina inicial, e toda vez q alguem acesse já aparece no sidebar ao lado a imagem da localização do usuario em questão. Outra coisa q não sei se é possível.. pelo IP é possívek saber a configuração do equipamento do usuário?? (desculpa se estiver falando bobagem).

    1. Rafael Clares

      Marcio, o que você pode fazer é procurar na internet alguma ferramenta (java por exemplo) que seja instalada na máquina do usuário para lhe retornar estas informações, estes programas são utilizados em help-desk para saber que houve alguma mudança/falha/roubo de hardware, no entanto o usuário precisaria estar consciente da instalação, por esse motivo acho pouco viável. obs: dê uma buscada no google. Obrigado pelo comentário. abs

  5. Marcio Sales

    Obrigado pela dica, meu interesse era exatamente esse, ter alguns usuarios cadastrados pra suporte.. e se precisar ter a mão os dados da config. Vlw.
    Ah, não conseguir por sua função pra rodar na duv da esquerda, ele não mostra nada. a função do jeito q está ai pode ser executada dentro do body, ou ser chamada. Oode citar uns exemplos. Vlw

  6. Marcio Sales

    Ei brow.. tow aguardando uma resposta sua, ou vc só responde qdo é conveniente. Achei q vc tratava tantos com os expert, como os os leigos. Quero deixar bem claro que meu interesse não é lesar algum usuario que veja a visitar, só não soube por o seu codigo pra funcionar na minha página. Vlw

    1. Rafael Clares

      Cara, eu apenas coloco aqui algumas dicas, faça como eu, explore. Eu não fico esperando ninguém fazer nada para mim, também não fico aguardando o aval de ninguém para tentar algo que tenho em mente. Quer saber se pode ser executada dentro do body? Vá lá, coloque dentro do body e veja o que acontece, é assim que eu faço. Eu escrevo aqui pq eu gosto, quando eu quero e estou com vontade, você não me paga para dar-lhe atenção exclusiva. Se você tem uma dúvida, pergunte e espere a resposta. Em local algum do blog está escrito que estou aqui 24hrs esperando pra responder perguntas que não precisariam ser feitas. A questão aqui não é que respondo o que é conveniente, eu não respondo quando são respostas que a própria pessoa pode obter. Sua primeira resposta: Não sei, não testei isso, você pode testar, não espere que eu teste para você. Segunda resposta, quanto a div esquerda, bem o post não é sobre html e css, procure na internet um post sobre divs.
      Espero que desenvolva um instinto natural para obter respostas simples que qualquer um pode obter sem a necessidade do aval de alguém para por a mente para funcionar.

  7. André

    Muito legal seu post, parece ser exatamente o que estou procurando, porem tentei de tudo e não consegui fazer funcionar e pode acreditar, tentei mesmo, ja faz uns 5 dias que estou apanhando para conseguir, ja testei outros meios que achei na net, mas até agora nada…Como você insere o script no seu código? Preciso trocar a chave do API do google maps? Obrigado pela atenção.

    1. Rafael Clares

      Poxa André, é estranho mesmo cara mas sempre que eu tento dá certo. Você já tentou abrir a página de exemplo que fiz, exibir o código fonte e copiar tudo para ver se dá certo. Juro que não consegui ainda ver essa brecha, sabe me dizer o que acontece exatamente, se não abre nada, se exibe um local diferente do seu, essas coisas… qualquer coisa que indique a falha. Fico no aguardo. abraços.

  8. Flávio

    Rafael. Gostei do seu post. Uma vez entrei em um site que me mostrou minha localização com: Latitude, Longitude, Cidade, Rua com número aproximado e mapa, CEP, etc…
    Por acaso vc tem um código fonte assim?
    Grato pela atenção.
    Flávio

  9. Guilherme L. Persici

    Olá Rafael,
    Parabéns pelo seu script, muito bom mesmo, ajudou 100000% !!!
    Abraço.

    1. cesar

      Galera, uma ideia legal é integrar esse script com o do post aqui do blog: google-maps-gmaps-php-jquery-adicionando-marcadores-customizados. vlw.

  10. Osnaldo Moraes

    Mas qual a precisão disso?
    Trabalho numa perspectiva de criar um sítio/portal de serviço no qual desejo que qualquer visitante que acesse veja imediatamente os profissionais de sua área de residência/trabalho, o que valeria muita economia de tempo e otimização de recursos para ambos!
    Como posso fazer isso?

    Obs) Os textos ao lado direito das duas quadrículas para marcar “Notificar-me os comentários mais recentes via e-mail.” e “Notifique-me de novos artigos por e-mail” estão praticamente invisíveis/transparentes, pois estão em letras brancas sem contorno/sombra num fundo azul claro!

    1. Rafael Clares

      Osnaldo, os dados são baseados no IP da sua conexão; A precisão é essa, faixa de IP obtida através do servidor pelo qual você fez autenticação.
      Depois dê uma olhada em http://www.ipaddresslocation.org/

  11. Lorena Lopes

    Como sempre show de bola!

    1. mtdsousa

      Realmente muito simples e incrível!
      Meus parabéns e muito obrigado.

  12. Marcelo

    olá legal o post. eu já utilizo essa api mas tem um problema que eu agora queria passar esses dados para o php para gravar em uma tabela mas não consigo interagir o script com o php. alguma ideia de como colocar cidade e estado e pais em variáveis do php? do jeito que tentei até imprime os nomes na página mas quando tento passar por parametro vai o texto do script e não os dados. tentei assim:

    http://pastebin.com/STAcVBFM

    aparece o nome da cidade certinho na pagina mas quando passo tento passar via get não dá certo.
    alguma ideia sobre como posso resolver?

    1. Rafael Clares

      Marcelo, tente passar via post;

      posta no pastebin o código que está usando para gravar no banco!

      1. Marcelo

        na verdade já consegui passar os dados mas agora tem problema que quando o nome tem mais de duas palavras na cidade só vai duas e estado e país ficam em branco. tava acontecendo de ir só a primeira palavra. aí eu usei o replace para trocar espaços por ponto e vírgula e depois voltando ponto e virgula para espaços. resolveu para nomes de duas palavras mas quando é mais de duas volta a acontecer. por exemplo são paulo passa tranquilo porque são duas palavras mas rio de janeiro só vai rio de na cidade e estado e país ficam em branco. sabe me dizer como conserto isso? A parte do código js está no link http://pastebin.com/yrRbSGY6. veja que uso o replace para tipo concatenar nomes com mais de uma palavra mas quando é mais de duas palavras não dá e não consigo achar um jeito de arrumar isso. o que vc poderia sugerir?

  13. Alexandre (@_aaoliveira)

    Cara muito bom a dica. Agora quanto a licença, qual seria os requisitos para poder usar essa API?

Os comentários estão encerrados.