2010-11-26 5 views
9

servicios que dan de API¿Cuál es la mejor solución para verificar el país de un usuario?

leo/oído que hay una gran cantidad de servicios que da la API de hacer esto, sin embargo, realmente no quiero depender de nadie así que por favor si hay una manera de hacerlo sin ellos, házmelo saber.

lado del servidor

Y también he leído/oído que esto se hace en el lado del servidor de codificación lo que me hace confuso, siempre pensé que esto se hace por JavaScript.

lista de direcciones IP

Y también he leído/oído que aquellos servicios que da API tienen una muy enorme lista de IP del ISP y pueden determinar el país de esta lista, es esto cierto? Y si quiero hacerlo solo sin API's, ¿debería tener una lista también?

+0

¿Se refiere a la ubicación geográfica actual del usuario? – Gumbo

+0

Umm quiero decir país, ejemplo Estados Unidos, Rusia, China, etc. – Adam

Respuesta

6

Cuando hice mi consulta, he usado este script: http://www.phptutorial.info/iptocountry/the_script.html

El db es una lista de archivos php y se puede suscribirse a una lista que le notificará de cambios de base de datos. Bastante útil si no tiene una base de datos :)

+0

gracias es un enlace muy útil :) – Adam

1

Cualquier comprobación generalmente va por IP y usa alguna base de datos de ipranges y a qué país están asignados.

Esto funciona en la mayoría de los casos a menos que el usuario utilice algún proxy o likewize.

La mayoría de estos cuestan dinero o solo están disponibles para ciertos fines.

Otra solución pero no tan confiable es utilizar los languges de los navegadores y posiblemente si puede consultar la zona horaria.

no tengo ningún servicio específico para recomendar ya que la mayoría de ellos no pueda hacer uso comercial y por lo tanto no puedo usarlos;)

+0

hmm muchas gracias por su respuesta, la zona horaria de los navegadores es una muy buena idea, no sabía que existe tal algo en un navegador, sin embargo, ¿qué tan confiable es?Me refiero a la compatibilidad del navegador y cómo funciona? – Adam

+0

Hmm, pero el problema con la zona horaria es que hay muchos países en la misma zona horaria: O – Adam

+0

No es tan confiable como una buena tabla GeoIP, pero la combinación de idioma + timezon al menos daría alguna pista de dónde podrían provenir. . Todo depende de para qué necesita la información y qué tan confiable la necesita. –

2

MaxMind ofrece la base de datos IP GeoLite País, que también se utiliza o apoyada por algunos analizadores de registros web como Webalizer y AWStats.

Está disponible de forma gratuita en formato CSV, que puede importar a la base de datos de la aplicación. También proporcionan una colección completa de guides and examples.

2

Una manera fácil de obtener el país de los usuarios es leer el encabezado HTTP_ACCEPT_LANGUAGE.

Aquí un ejemplo (PHP):

$langcodes=$_SERVER['HTTP_ACCEPT_LANGUAGE']; 
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']); 

if(preg_match("/(bg|bg-BG|cs|cs-CZ|da|da-DK|de|de-AT|de-CH|de-DE|de-LI|de-LU|el|el-GR|en-GB|en-IE|es-ES|et|et-EE|fi|fi-FI|fr-BE|fr-CH|fr-FR|fr-LU|fr-MC|ga|hu|hu-HU|it|it-CH|it-IT|lt|lt-LT|lv-LV|lv|mt|mt-MT|nl|nl-BE|nl-NL|pl|pl-PL|pt-PT|ro|ro-RO|sk|sl|sk-SK|sv|sv-FI|sv-SE|fr)([,;].*)?$/i",$langcodes) 
    || preg_match("/(\.ad|\.al|\.at|\.ax|\.ba|\.be|\.bg|\.by|\.ch|\.cy|\.cz|\.de|\.dk|\.ee|\.es|\.eu|\.fi|\.fo|\.fr|\.gb|\.gg|\.gi|\.gr|\.hr|\.hu|\.ie|\.im|\.is|\.it|\.je|\.li|\.lt|\.lu|\.lv|\.mc|\.md|\.me|\.mk|\.mt|\.nl|\.no|\.pl|\.pt|\.ro|\.rs|\.se|\.si|\.sk|\.sm|\.ua|\.uk|\.va)$/i", $host)) 
{ 
    echo "European User"; 
} 
else 
    echo "non-European User"; 
Cuestiones relacionadas