2009-12-02 23 views

Respuesta

6
$ip = '98.229.152.237'; 
$xml = simplexml_load_file("http://ipinfodb.com/ip_query.php?ip=$ip"); 
print_r($xml); 

Salida:

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 
) 
+0

gracias esto es lo que estaba buscando .... – Biranchi

+0

No funciona ahora –

1

Echa un vistazo a PEAR GeoIP library.

+0

tu enlace devuelve 404 – Amirshk

+0

Disculpa. El guión bajo se codificó. Fijo. –

3

Puede consultar el maxmind database y el GeoIP PECL extension.

En mi caso:

  • He instalado la extensión con "pecl install geoip"
  • Y he descargado el geolitecity database y copié en /usr/share/GeoIP/GeoIPCity.dat por lo que se encuentra por la extensión PECL.

Nota También debe haber algún paquete PEAR (PEAR::Net_GeoIP) para ayudarle, si no puede instalar ninguna extensión PECL.


Una vez que haya instalado ambas cosas, puede utilizar este tipo de código:

$ip = '82.229.x.y';  // replace with your IP address 
var_dump(geoip_record_by_name($ip)); 

y obtendrá este tipo de salida:

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 

que, en mi caso, es cierto: estoy de hecho en la ciudad de Lyon, FR.

0
$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 
) 
1

La pregunta inicial sigue siendo relevante para muchos; ahora a finales de 2016).

Mi respuesta después de años de experiencia con GEO localización es la siguiente ...

real de informes de detalles de la ubicación más allá de "País" no es fiable. Toda la información se obtiene del registro de IP # ISP y es esa información relevante que los principales proveedores de datos actualizan y transmiten periódicamente. A medida que se eliminan o compran los IP #, los proveedores deben obtener los detalles sobre el registro/cambios de las empresas en cuestión (es decir, los ISP). La mayoría de los números se obtienen en "bloques" pero no necesariamente todos son relevantes para el mismo servidor.

* Muchos (si no la mayoría?) De los sitios web privados más pequeños que suministran información al público usan el "Maxmind" GRATIS db y (incorrectamente) pasan eso al público; lee las advertencias de Maxmind. Los sitios más pequeños no tienen los recursos para actualizar constantemente los registros de autoridad.

Las bases de datos gratuitas maxmind e "ip2location" son un subconjunto más pequeño de sus bases de datos de pago; ver sus advertencias para la explicación de lo que falta.

Muchos IP # s comprados en bloques se comparten en cualquier cantidad de servidores y esto genera ambigüedad de la información. Cuando se usa una conexión de red inalámbrica a un ISP, a diferencia de una conexión ADSL/cable/blah cableada probablemente estable, la errora puede ser bastante sorprendente debido a la ubicación especialmente amplia de servidores de red ISP (retransmisión); en la mayoría de los casos, cambios no estáticos entre sesiones y tal vez incluso algunos durante cada sesión.

Como ejemplo cuando utilizo un dongle portátil inalámbrico itinerante para la conexión de ISP a menudo me cita como estar en otro estado, y eso puede ser (aquí en AU) de cientos a miles de KM de mi ubicación real.

¿Se puede ... con PHP?

Usando el par principal de proveedores DB (es decir, ip2location.com) uno tendrá acceso a los scripts disponibles del lado del servidor que se pueden utilizar para obtener la información necesaria. Y en lugar de una base de datos gratuita menos confiable de ellos, utilizo el DB1 de ip2location para obtener los visitantes "País" solo desde los que puedo hacer lo que quiero a través de Perl y PHP.

También descargo y descomprimo AUTOMÁTICAMENTE, según las advertencias de uso, el archivo binario db mensualmente justo después de actualizarlo. Obviamente, el acceso a las búsquedas desde el propio sitio supera los problemas de adquisición y procesamiento remotos a pedido.

Para mis requisitos, la ip2location FULL db era considerablemente más barata que Maxmind por año. * Sin embargo, el Maxmind FREE db es más extenso que el ip2location FREE DB.

Nota cuando trato de obtener visitantes adicionales dirección y detalles de estado, etc. Sugiero fuertemente que se muestre de forma que el visitante pueda hacer correcciones; para que no se vayan frustrados.

Atentamente.

Cuestiones relacionadas