Quero receber visitantes do país por meio de seu IP ... No momento, estou usando isso ( http://api.hostip.info/country.php?ip= ......)
Bem, está funcionando corretamente, mas o problema é que isso retorna o código do país, como EUA ou CA, e não o nome do país inteiro, como Estados Unidos ou Canadá.
Então, existe alguma boa alternativa para o hostip.info oferece isso?
Eu sei que posso escrever apenas um código que acabará transformando essas duas letras em nomes de países inteiros, mas estou com preguiça de escrever um código que contenha todos os países ...
PS: Por algum motivo, não quero usar nenhum arquivo CSV pronto ou qualquer código que pegue essas informações para mim, algo como código pronto para ip2country e CSV.
Não seja preguiçoso, não existem muitos países e não é muito difícil obter uma tabela de tradução de códigos de letras FIPS 2 para nomes de países.
— 23712 Chris Henry
Use o recurso MaxMind Geoip. Incluirá o nome do país nos resultados. maxmind.com/app/php
— Tchoupi
Sua primeira tarefa para $real_ip_addresssempre é ignorada. De qualquer forma, lembre-se que o X-Forwarded-ForHTTP cabeçalho pode ser extremamente facilmente falsificado, e que há proxies como www.hidemyass.com
O IPLocate.io fornece uma API gratuita: https://www.iplocate.io/api/lookup/8.8.8.8- Isenção de responsabilidade: eu executo este serviço.
Sugiro tentar o Ipregistry : api.ipregistry.co/… (aviso: eu executo o serviço).
Experimente esta função PHP simples.
Exemplo1: obter detalhes do endereço IP do visitante
Exemplo 2: obtenha detalhes de qualquer endereço IP. [Suporte IPV4 e IPV6]
— Chandra Nakka
por que estou ficando desconhecido o tempo todo com cada ip? , usou o mesmo código.
— echo_Me 18/02
Você fica "Desconhecido" provavelmente porque seu servidor não permite file_get_contents(). Basta verificar o seu arquivo error_log. Solução alternativa: veja minha resposta.
Também pode ser porque u verificá-lo localmente (192.168.1.1 / 127.0.0.1 / 10.0.0.1)
— Hontoni
Lembre-se de armazenar em cache os resultados por um período definido. Além disso, como nota, você nunca deve confiar em outro site para obter dados, o site pode ficar inoperante, o serviço pode parar etc.
Siga em frente: esse é um problema ao testar um site no host local. Alguma maneira de corrigir para fins de teste? Usa o IP localhost 127.0.0.1 padrão
Você pode usar uma API simples em http://www.geoplugin.net/
Faz você ter tantas opções com as quais pode brincar
Isso é muito legal. Mas enquanto testamos aqui, não há valores nos seguintes campos "geoplugin_city, geoplugin_region, geoplugin_regionCode, geoplugin_regionName" .. Qual é o motivo? Existe alguma solução? Agradecemos antecipadamente
— WebDevRon
Tentei a resposta do Chandra, mas a configuração do meu servidor não permite file_get_contents ()
Modifiquei o código do Chandra para que ele também funcione para servidores como esse usando cURL:
De acordo com os documentos em seu site: "Se o geoplugin.net estava respondendo perfeitamente, então parou, então você ultrapassou o limite de pesquisa gratuita de 120 solicitações por minuto".
— Rick Hellewell,
Trabalhou lindamente. Obrigado!
Na verdade, você pode chamar http://api.hostip.info/?ip=123.125.114.144 para obter as informações, que são apresentadas em XML.
Use MaxMind GeoIP (ou GeoIPLite se você não estiver pronto para pagar).
@ Joyce: Tentei usar a API e o banco de dados Maxmind, mas não sei por que não funciona para mim, na verdade funciona em geral, mas, por exemplo, quando executo esse $ _SERVER ['REMOTE_ADDR']; ele me mostra este ip: 10.48.44.43, mas quando eu o uso em geoip_country_code_by_addr ($ gi, $ ip), ele não retorna nada, alguma ideia?
— mOna 21/09/14
É um endereço IP reservado (endereço IP interno da sua rede local). Tente executar o código em um servidor remoto.
Use os seguintes serviços
Confira php-ip-2-country em code.google. O banco de dados que eles fornecem é atualizado diariamente, portanto, não é necessário conectar-se a um servidor externo para verificação, se você hospedar seu próprio servidor SQL. Então, usando o código, você apenas precisará digitar:
Código de exemplo (do recurso)
devemos fornecer informações do banco de dados para funcionar? parece não ser bom.
— Echo_Me 15/02
Podemos usar geobytes.com para obter a localização usando o endereço IP do usuário
retornará dados como este
Função para obter o IP do usuário
— Ram Sharma
Eu tentei o seu código, ele retorna isso para mim: Array ([conhecidos] => false)
quando tento isso: $ ip = $ _SERVER ["REMOTE_ADDR"]; eco $ ip; retorna: 10.48.44.43, você sabe qual é o problema? Eu costumava alspo geoip MaxMind, e quando eu usei geoip_country_name_by_addr ($ gi, $ ip) againit me devolveu nada ...
@mOna, ele retorna seu endereço IP. para mais detalhes pls, compartilhe seu código.
Descobri que o problema é realted para o meu ip, pois é para rede privada. então eu fuond meu ip real no ifconfig e usei no meu programa. então funcionou :) Agora, minha pergunta é como obter ip real no caso desses usuários semelhantes a mim? (se eles usam ip local) .. Eu escrevi meu código aqui: stackoverflow.com/questions/25958564/…
Experimente este código simples de uma linha. Você receberá o país e a cidade dos visitantes a partir do endereço IP remoto.
— Sankar Jay
Você pode usar um serviço da web em http://ip-api.com
no seu código php, faça o seguinte:
a consulta tem muitas outras informações:
Usado ip-api.com porque eles também fornecem o nome do provedor!
— Richard Tinkler
Eu usei porque eles também fornecem o fuso horário
— Roy Shoa 10/10
Existe uma versão de arquivo simples bem mantida do banco de dados ip-> country mantida pela comunidade Perl no CPAN
O acesso a esses arquivos não requer um servidor de dados e os dados em si são aproximadamente 515k
Higemaru escreveu um wrapper PHP para conversar com esses dados: php-ip-country-fast
— djsadinoff
Muitas maneiras diferentes de fazer isso ...
Um serviço de terceiros que você pode usar é http://ipinfodb.com . Eles fornecem nome do host, localização geográfica e informações adicionais.
Registre-se para obter uma chave de API aqui: http://ipinfodb.com/register.php . Isso permitirá que você recupere resultados do servidor deles, sem isso não funcionará.
Copie e cole o seguinte código PHP:
Citando em seu site:
Nossa API gratuita está usando a versão IP2Location Lite, que fornece menor precisão.
Esta função retornará o nome do país usando o serviço http://www.netip.de/ .
— imbondbaby
Citando seu site: "Você está limitado a 1.000 solicitações de API por dia. Se precisar fazer mais solicitações ou precisar de suporte SSL, consulte nossos planos pagos".
Eu o usei no meu site pessoal e foi por isso que o publiquei. Obrigado pela informação ... não percebi. Eu coloquei muito mais esforço no post, por favor, veja o post atualizados :)
@imbondbaby: Oi, eu tentei o seu código, mas para mim ele retorna isso: Array ([country] => -), não entendo o problema desde quando tento imprimir: $ ipaddress = $ _SERVER ['REMOTE_ADDR' ]; mostra-me este ip: 10.48.44.43, não consigo entender por que esse ip não funciona! Quero dizer, onde quer que eu insira esse número, ele não retorna nenhum país !!! Você pode me ajudar?
Meu serviço ipdata.co fornece o nome do país em 5 idiomas! Assim como a organização, moeda, fuso horário, código de chamada, sinalizador, dados da operadora de celular, dados de proxy e dados de status do nó de saída do Tor de qualquer endereço IPv4 ou IPv6.
Também é extremamente escalável, com 10 regiões ao redor do mundo, cada uma capaz de lidar com mais de 10.000 solicitações por segundo!
As opções incluem; Inglês (en), alemão (de), japonês (ja), francês (fr) e chinês simplificado (za-CH)
Deus te abençoe, cara! Eu tenho mais do que aquilo que pedi! Pergunta rápida: posso usá-lo para prod? Quero dizer, você não vai anotar tão cedo, não é?
Nem um pouco :) Na verdade, estou adicionando mais regiões e mais polimento. Fico feliz que você encontrou este para ser de ajuda :)
Muito útil, especialmente com os parâmetros adicionais, resolveu mais de um problema para mim!
Obrigado pelo feedback positivo! Eu construído em torno da maioria dos casos de uso comuns para essa ferramenta, o objetivo era eliminar ter que fazer qualquer processamento adicional após a geolocalização, feliz em ver esta pagando para os usuários
Não tenho certeza se este é um serviço novo, mas agora (2016) a maneira mais fácil no php é usar o serviço web php da geoplugin: http://www.geoplugin.net/php.gp :
Eles também fornecem uma classe pronta: http://www.geoplugin.com/_media/webservices/geoplugin.class.php.tgz?id=webservices%3Aphp&cache=cache
Você usou um elseapós o elsequal causa um erro. O que você tentou impedir? REMOTE_ADDR deve estar disponível o tempo todo?
— AlexioVay 27/10/16
@ Vaia - Talvez deva ser, mas você nunca sabe.
Existe um caso em que ele não está disponível?
@Vaia - a partir dos documentos do PHP em $_SERVER: "Não há garantia de que todos os servidores da Web forneçam um desses; os servidores podem omitir alguns ou fornecer outros não listados aqui".
Observe que há um limite para solicitações; do site: "Se o geoplugin.net estava respondendo perfeitamente, então parou, você ultrapassou o limite de pesquisa gratuita de 120 solicitações por minuto".
Estou usando a ipinfodb.comAPI e obtendo exatamente o que você está procurando.
É totalmente gratuito, você só precisa se registrar com eles para obter sua chave da API. Você pode incluir a classe php baixando do site ou usar o formato de URL para recuperar informações.
Eu incluí a classe php no meu script e usando o código abaixo:
— Miraj
você pode usar http://ipinfo.io/ para obter detalhes do endereço IP É fácil de usar.
— Aqib1604
Substitua 127.0.0.1pelos visitantes IpAddress.
As instruções de instalação estão aqui e leia isto para saber como obter Cidade, Estado, País, Longitude, Latitude, etc ...
Forneça mais código real do que apenas links físicos.
Notícias posteriores do link: "A partir de 2 de janeiro de 2019, a Maxmind interrompeu os bancos de dados GeoLite originais que usamos em todos esses exemplos. Você pode ler o comunicado completo aqui: support.maxmind.com/geolite-legacy-discontinuation-notice "
Um liner com um endereço IP para a API do país
https://ipapi.co/country_name/ - seu país
https://ipapi.co/8.8.8.8/country_name/ - país para IP 8.8.8.8
— user6885709
Essa API permite 1000 chamadas de API (gratuitas) por dia.
Eu tenho uma resposta curta que usei em um projeto. Na minha resposta, considero que você tem o endereço IP do visitante.
Eu sei que isso é antigo, mas tentei algumas outras soluções aqui e elas parecem estar desatualizadas ou simplesmente retornam nulas. Então foi assim que eu fiz.
Uso http://www.geoplugin.net/json.gp?ip=que não requer nenhum tipo de inscrição ou pagamento pelo serviço.
E se você quiser informações extras sobre isso, este é um retorno completo do Json:
Eu escrevi uma aula baseada na resposta "Chandra Nakka". Espero que ajude as pessoas a salvar as informações da geoplugin em uma sessão, para que a carga seja muito mais rápida ao recuperar as informações. Ele também salva os valores em uma matriz privada, portanto, recuperar o mesmo código é o mais rápido possível.
Respondendo à pergunta 'op' com esta classe, você pode ligar
E as outras propriedades disponíveis são:
— royalwebs
A API do país do usuário tem exatamente o que você precisa. Aqui está um código de exemplo usando file_get_contents () como você faz originalmente:
— byl83
Essa API permite 100 chamadas de API (gratuitas) por dia.
Você pode receber visitantes do país e da cidade usando a API geográfica do ipstack. Você precisa obter sua própria API do ipstack e usar o código abaixo:
Fonte: Obtenha visitantes país e cidade em PHP usando a API do ipstack
Esta é apenas uma nota de segurança sobre a funcionalidade de get_client_ip()que a maioria das respostas aqui foram incluídas na função principal de get_geo_info_for_this_ip().
Não confie muito nos dados IP nos cabeçalhos de solicitação, Client-IPou X-Forwarded-Forporque eles podem ser falsificados com muita facilidade; no entanto, você deve confiar no IP de origem da conexão TCP que é realmente estabelecida entre o servidor e o cliente $_SERVER['REMOTE_ADDR'], pois pode ' não seja falsificado
Não há problema em obter o país do IP falsificado, mas lembre-se de que o uso desse IP em qualquer modelo de segurança (por exemplo: banir o IP que envia solicitações frequentes) destruirá todo o modelo de segurança. IMHO Eu prefiro usar o IP do cliente real, mesmo que seja o IP do servidor proxy.
— Dipanshu Mahla
A parte if-else fornecerá o endereço IP do visitante e a próxima parte retornará o código do país. Tente visitar api.wipmania.com e depois api.wipmania.com/[your_IP_address]
Você pode usar meu serviço: https://SmartIP.io , que fornece nomes completos de países e nomes de cidades de qualquer endereço IP. Também expomos fusos horários, moeda, detecção de proxy, detecção de nós TOR e detecção de criptografia.
Você só precisa se inscrever e obter uma chave de API gratuita que permita 250.000 solicitações por mês.