2011-10-14 22 views
21

Estamos buscando una forma rápida y precisa de obtener la ubicación de los visitantes en función de su IP.Ubicación geográfica basada en la dirección IP - PHP

Hemos intentado con ipinfodb.com pero su API hizo que nuestro sitio web sufriera un retraso considerable al realizar la llamada a la API.

¿Qué otros servicios me sugiere?

+0

Duplicar posibles: [? Lo que existen servicios que geo-localiza una persona basada en IP] (http://stackoverflow.com/questions/464142/what-services-exist-that-geo-locates-a -person-based-on-ip) – hakre

+0

posible duplicado de [Obtener el país de la dirección IP con PHP] (http://stackoverflow.com/questions/3650006/get-country-of-ip-address-with-php) –

+0

Checkout https://ipdata.co, un servicio que creé que tiene 10 puntos finales globales, cada uno capaz de manejar llamadas> 800M diariamente. Es súper rápido y tiene muchos datos relevantes. – Jonathan

Respuesta

38

Obtener Información Geo-IP

Solicitudes una geo-IP-servidor (netip.de) para comprobar, en donde vuelve un IP se encuentra (host, estado, país, ciudad).

<?php 
     $ip='94.219.40.96'; 
     print_r(geoCheckIP($ip)); 
     //Array ([domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen) 

     //Get an array with geoip-infodata 
     function geoCheckIP($ip) 
     { 
       //check, if the provided ip is valid 
       if(!filter_var($ip, FILTER_VALIDATE_IP)) 
       { 
         throw new InvalidArgumentException("IP is not valid"); 
       } 

       //contact ip-server 
       [email protected]_get_contents('http://www.netip.de/search?query='.$ip); 
       if (empty($response)) 
       { 
         throw new InvalidArgumentException("Error contacting Geo-IP-Server"); 
       } 

       //Array containing all regex-patterns necessary to extract ip-geoinfo from page 
       $patterns=array(); 
       $patterns["domain"] = '#Domain: (.*?)&nbsp;#i'; 
       $patterns["country"] = '#Country: (.*?)&nbsp;#i'; 
       $patterns["state"] = '#State/Region: (.*?)<br#i'; 
       $patterns["town"] = '#City: (.*?)<br#i'; 

       //Array where results will be stored 
       $ipInfo=array(); 

       //check response from ipserver for above patterns 
       foreach ($patterns as $key => $pattern) 
       { 
         //store the result in array 
         $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found'; 
       } 

       return $ipInfo; 
     } 

?> 

Nomsayn?

Si desea utilizar una base de datos este líder http://www.phpandstuff.com/articles/geoip-country-lookup-with-php

+1

Esto es bueno, pero preferiría una base de datos ya que nuestro sitio web recibe miles de solicitudes y la solicitud de IP geográfica se realizará por carga de página. – Latox

+2

@latox Acabo de actualizar mi pregunta, eche un vistazo a ese enlace ¿debería ser lo que busca nomsayn? –

+0

@Latox - Si mantiene un caché local con los resultados de sus llamadas a la API, entonces solo tiene que pagar los gastos generales de una llamada API para cada nueva dirección IP. Pero el DB en el enlace de arriba parece perfecto para su aplicación, siempre y cuando no necesite precisión de última hora. – Peter

2

El mercado en este espacio y que proporciona una solución empresarial es Digital Element. Ofrecen una amplia gama de API, incluido PHP, para acceder a su servidor, que puede instalar localmente o acceder a través de un servicio web. Sus datos son de alta calidad y el rendimiento de su solución es bastante bueno. MaxMind es otra opción que recibe buenas críticas.

Para obtener la mejor precisión, querrá optar por un servicio o solución en la que obtenga actualizaciones semanales, ya que esto puede cambiar bastante dentro de una red determinada. El costo dependerá de la frecuencia de las actualizaciones, la granularidad de los datos geográficos y la cantidad de campos o bases de datos adicionales que desee. Algunos proveedores ofrecen lenguaje, datos demográficos, empresa y dominio, por nombrar algunos.

4

El mejor y más reciente es GeoplugginAPI su libre y sin limitaciones que estoy acostumbrado a esta página web http://spidersoft.in para descargar basados ​​en la localización leer más desde este enlace

http://geoplugin.com

3

prueba este http://ip.codehelper.io/

Aquí es código PHP El código almacenará automáticamente en caché su solicitud, por lo que su servidor no enviará solicitudes múltiples. Devuelve la dirección IP, el país, la ciudad y más información.

<?php 
// Required Libraries 
require_once("ip.codehelper.io.php"); 
require_once("php_fast_cache.php"); 

// New Class 
$_ip = new ip_codehelper(); 

// Detect Real IP Address & Location 
$real_client_ip_address = $_ip->getRealIP(); 
$visitor_location  = $_ip->getLocation($real_client_ip_address); 

// Output result 
echo $visitor_location['Country'].""; 
echo "<pre>"; 
print_r($visitor_location); 
Cuestiones relacionadas