Quero receber visitantes do país por meio de seu IP ... No momento, estou usando isso ( http://api.hostip.info/country.php?ip= ......)
Aqui está o meu código:
<?php
if (isset($_SERVER['HTTP_CLIENT_IP']))
{
$real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$real_ip_adress = $_SERVER['REMOTE_ADDR'];
}
$cip = $real_ip_adress;
$iptolocation = 'http://api.hostip.info/country.php?ip=' . $cip;
$creatorlocation = file_get_contents($iptolocation);
?>
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.
php
geolocation
ip
country-codes
Alex C.
fonte
fonte
$real_ip_address
sempre é ignorada. De qualquer forma, lembre-se que oX-Forwarded-For
HTTP cabeçalho pode ser extremamente facilmente falsificado, e que há proxies como www.hidemyass.comhttps://www.iplocate.io/api/lookup/8.8.8.8
- Isenção de responsabilidade: eu executo este serviço.Respostas:
Experimente esta função PHP simples.
Como usar:
Exemplo1: obter detalhes do endereço IP do visitante
Exemplo 2: obtenha detalhes de qualquer endereço IP. [Suporte IPV4 e IPV6]
fonte
file_get_contents()
. Basta verificar o seu arquivo error_log. Solução alternativa: veja minha resposta.Você pode usar uma API simples em http://www.geoplugin.net/
Função Utilizada
Resultado
Faz você ter tantas opções com as quais pode brincar
obrigado
:)
fonte
Tentei a resposta do Chandra, mas a configuração do meu servidor não permite file_get_contents ()
PHP Warning: file_get_contents() URL file-access is disabled in the server configuration
Modifiquei o código do Chandra para que ele também funcione para servidores como esse usando cURL:
Espero que ajude ;-)
fonte
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.
fonte
Use MaxMind GeoIP (ou GeoIPLite se você não estiver pronto para pagar).
fonte
Use os seguintes serviços
1) http://api.hostip.info/get_html.php?ip=12.215.42.19
2)
3) http://ipinfodb.com/ip_location_api.php
fonte
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)
Resultado
fonte
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
fonte
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.
fonte
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:
fonte
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
fonte
Muitas maneiras diferentes de fazer isso ...
Solução 1:
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:
Desvantagem:
Citando em seu site:
Solução 2:
Esta função retornará o nome do país usando o serviço http://www.netip.de/ .
Resultado:
fonte
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)
fonte
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 :
Uso básico:
Eles também fornecem uma classe pronta: http://www.geoplugin.com/_media/webservices/geoplugin.class.php.tgz?id=webservices%3Aphp&cache=cache
fonte
else
após oelse
qual causa um erro. O que você tentou impedir? REMOTE_ADDR deve estar disponível o tempo todo?$_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".Estou usando a
ipinfodb.com
API 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.
Aqui está o que estou fazendo:
Eu incluí a classe php no meu script e usando o código abaixo:
É isso aí.
fonte
você pode usar http://ipinfo.io/ para obter detalhes do endereço IP É fácil de usar.
fonte
Substitua
127.0.0.1
pelos 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 ...
fonte
Um liner com um endereço IP para a API do país
Exemplo:
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
fonte
Eu tenho uma resposta curta que usei em um projeto. Na minha resposta, considero que você tem o endereço IP do visitante.
fonte
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:
fonte
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:
Retornando
fonte
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:
fonte
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
fonte
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 deget_geo_info_for_this_ip()
.Não confie muito nos dados IP nos cabeçalhos de solicitação,
Client-IP
ouX-Forwarded-For
porque 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 falsificadoNã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.
fonte
Experimentar
fonte
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.
Usando a biblioteca PHP oficial, a chamada da API se torna:
Verifique a documentação da API para obter mais informações: https://smartip.io/docs
fonte
A partir de 2019, o banco de dados do país MaxMind pode ser usado da seguinte maneira:
Fonte: https://github.com/maxmind/MaxMind-DB-Reader-php
fonte
Isso seria aceitável? PHP puro
ref: https://www.php.net/manual/en/function.geoip-country-code-by-name.php
fonte