Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom pessoal
Um cliente me pediu pra colocar no site dele algo que descobrisse de qual país são os visitantes dele.
O que sugeri na hora foi usar o Google Analytics, mas foi dada preferencia, por parte do cliente, por um sistema proprio.
Então a unica solução que pensei na hora foi por endereços de IP. Pesquisando na internet achei um banco de dados completo
(ainda não sei dizer se é confiavel, não fiz teste algum) no formato .csv, até ai sem problemas, com php e um pouco de paciencia
pra pesquisar consegui inserir tais dados no banco MySQL.
E é aqui que meu problema começa...
O banco está mais com quatro colunas (de, ate, sigla, pais)
Exemplo: 200.128.0.0 - 201.95.255.255 - BR - Brazil
O que eu tentei, pra mostrar em qual país eu estava, foi:
"SELECT * FROM paises WHERE de < '200.232.215.159' AND ate > '200.232.215.159'"
Mas de cara vi que essa consulta não funciona, pois pra mim, retornou dois resultados, e um deles incorreto:
19.203.239.32 - 21.56.9.31 - US
e
200.128.0.0 - 201.95.255.255 - BR
Alguem pode me dar uma ideia de como fazer esse select?
Abraço, muito obrigado.
Tenta com o BETWEEN no select para pegar o ip entre (de) e (ate).
Talvez da certo.
Acho que a lógica do que você está tentando fazer, seria toda vez que o cara roda-se a página executar um insert no sql com o ip dele.
FROM tabela WHERE ip = 100.100.100.100 OR ip = 200.200.200.200Retorna quantidade de acessos do país.
Com certeza deve ter outras maneiras melhores para fazer isso.
http://www.go4expert.com/forums/showthread.php?t=3511
http://www.linuxjournal.com/article/7856
http://newestindustry.org/2005/11/08/geographic-ip-database-using-perl-php-and-mysql/