Obtendo detalhes de localização de IP em PHP
-
11-09-2019 - |
Pergunta
É possível obter os detalhes da localização dos usuários de endereços IP em PHP.
Todas as sugestões ??
Graças
Solução
$ip = '98.229.152.237';
$xml = simplexml_load_file("http://ipinfodb.com/ip_query.php?ip=$ip");
print_r($xml);
Output:
SimpleXMLElement Object
(
[Ip] => 98.229.152.237
[Status] => OK
[CountryCode] => US
[CountryName] => United States
[RegionCode] => 33
[RegionName] => New Hampshire
[City] => Manchester
[ZipPostalCode] => 03103
[Latitude] => 42.9403
[Longitude] => -71.4435
[Timezone] => -5
[Gmtoffset] => -5
[Dstoffset] => -4
)
Outras dicas
Você precisa usar algumas vacas de Geo Serviço IP
Um serviço gratuito que eu encontrei no google: geoplugin . Eles php snipplets de usar o seu serviço: geoplugin / php
Você pode dar uma olhada para o MaxMind banco de dados , e GeoIP PECL extensão .
No meu caso:
- Eu instalei a extensão com "
pecl install geoip
" - E eu fiz o download do banco de dados geolitecity e copiados-lo para
/usr/share/GeoIP/GeoIPCity.dat
por isso é encontrado a extensão PECL.
Note também deve haver algum pacote PEAR ( PEAR::Net_GeoIP
) para ajudá-lo, se você não é possível instalar qualquer extensão PECL.
Depois de ter instalado tanto daqueles, você pode usar esse tipo de código:
$ip = '82.229.x.y'; // replace with your IP address
var_dump(geoip_record_by_name($ip));
E você vai obter este tipo de saída:
array
'continent_code' => string 'EU' (length=2)
'country_code' => string 'FR' (length=2)
'country_code3' => string 'FRA' (length=3)
'country_name' => string 'France' (length=6)
'region' => string 'B9' (length=2)
'city' => string 'Lyon' (length=4)
'postal_code' => string '' (length=0)
'latitude' => float 45.75
'longitude' => float 4.84999990463
'dma_code' => int 0
'area_code' => int 0
O que, no meu caso, é verdade: eu sou de fato na cidade de Lyon, FR
.Confira o PERA GeoIP biblioteca .
A pergunta inicial continua a ser relevante para muitos; Agora final de 2016).
A minha resposta depois de anos de experiência com GEO localização é a seguinte ...
relato real de detalhes de localização além de "País" não é confiável. Toda a informação é adquirida a partir do registro IP # ISP e é essa informação relevante que é regularmente actualizado e passou pelos principais fornecedores de dados. Como IP nº s são descartados ou comprou os fornecedores devem obter os detalhes sobre o registro / muda das empresas em causa (ou seja, ISPs). A maioria dos números são obtidos em "blocos", mas não todos necessariamente relevantes para o mesmo servidor.
* Muitos (? Se não a maioria) dos sites menores corsário fornecendo informações para o uso público do "MaxMind" FREE db e (indevidamente) passar isso para o público; leia ressalvas MaxMind. sites menores não têm os recursos para a atualização constante dos registros de autoridade.
O MaxMind livre e DBS "IP2Location" são um subconjunto menor de seu salário-de bases de dados; ver suas advertências para explicação sobre o que está faltando.
comprados em blocos Muitos IP # s são compartilhados através de qualquer número de servidores e isso leva a informações ambigüidade. Quando usando uma ligação de rede sem fios a um ISP, em oposição a uma ligação ADSL bla provavelmente estável com fio / cabo /, o errora pode ser muito surpreendente porque de largo especialmente posicionamento dos servidores de rede ISP (afinação); na maioria dos casos não-estático mudando entre as sessões e talvez até mesmo alguns durante cada sessão.
Como exemplo, quando usando um dongle laptop wireless de roaming para conexão ISP sou frequentemente citado como sendo em outro estado, e que pode ser (aqui em AU) em qualquer lugar de centenas a milhares de kms de distância de minha posição real.
você pode ... com PHP ?
Usando o grande par de fornecedores DB (ie ip2location.com) um terá acesso a scripts do lado do servidor disponíveis que podem ser utilizados para obter as informações necessárias. E em vez de um DB livre menos confiável a partir deles eu uso DB1 de IP2Location para obter os visitantes "País" apenas de que eu posso fazer o que eu quero via tanto Perl e PHP.
Eu também baixar AUTO e descomprimir, como por advertências de uso, a db binário em uma base mensal apenas depois que ele for atualizado. Obviamente acesso look-ups de uns próprios problemas do local Supera com aquisição e processamento remoto sob demanda.
Para os meus requisitos do IP2Location db completo foi consideravelmente mais barato do que MaxMind por ano. * No entanto, a db MaxMind LIVRE é mais extensa do que a IP2Location GRÁTIS DB.
Nota ao tentar obter visitantes de endereço e estaduais detalhes adicionais etc I sugerem fortemente que é apresentada de uma forma que o visitante pode fazer correções; para que não se deixe frustrada.
Cumprimentos.
$ip = "66.96.147.144";
$geoPlugin_array = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $ip) );
echo '<pre>';
print_r($geoPlugin_array);
OUTPUT :
Array
(
[geoplugin_request] => 66.96.147.144
[geoplugin_status] => 200
[geoplugin_credit] => Some of the returned data includes GeoLite data created by MaxMind, available from http://www.maxmind.com.
[geoplugin_city] => Burlington
[geoplugin_region] => MA
[geoplugin_areaCode] => 781
[geoplugin_dmaCode] => 506
[geoplugin_countryCode] => US
[geoplugin_countryName] => United States
[geoplugin_continentCode] => NA
[geoplugin_latitude] => 42.5051
[geoplugin_longitude] => -71.204697
[geoplugin_regionCode] => MA
[geoplugin_regionName] => Massachusetts
[geoplugin_currencyCode] => USD
[geoplugin_currencySymbol] => $
[geoplugin_currencySymbol_UTF8] => $
[geoplugin_currencyConverter] => 1
)
Eu encontrei recentemente PHP GeoIPLocation Biblioteca
É um único arquivo PHP que você precisa incluir em seu script PHP. Ele procura automaticamente um banco de dados bem atualizado e retorna os detalhes de país para você.