2010-05-14 15 views

Respuesta

17

Descargar e instalar la base de datos Maxmind's GeoLite Country, que garantiza el 99.5% de precisión. Puede pagar para actualizar a una versión paga con una precisión del 99,8% reclamada. Hay cuatro opciones con respecto a cómo usar la base de datos de PHP:

  1. Descargue el archivo CSV e impórtelo en su base de datos SQL de su elección. Esta es la opción más lenta y tiene una API fea. No lo recomendaría, pero está incluido para completar.
  2. Descargue una clase PHP pura que pueda leer el archivo de la base de datos. Esto proporciona una buena API que la opción de SQL, pero aún es un poco lenta. Hay versiones para PHP4 y PHP5
  3. Descargue e instale el C extension module for PHP. Esto tiene la ventaja de tener un nice interface y un buen rendimiento. Sin embargo, es más difícil de instalar que la clase pura de PHP, por lo que es posible que deba consultar con su empresa de alojamiento. Si tiene suerte, es posible que ya esté instalado.
  4. Si necesita un rendimiento sorprendentemente rápido, vaya al Apache module. Es la opción más difícil de instalar, pero también la más rápida.

Todas estas opciones tienen un método para obtener un código de país. No incluiré la opción SQL, pero puede obtener more info here.

PHP4 puro:

include("geoip.inc"); 
$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD); 
$code = geoip_country_code_by_addr($gi, "24.24.24.24"); 

PECL extensión PHP: Módulo

$code = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']); 

Apache:

$code = apache_note("GEOIP_COUNTRY_CODE"); 

A continuación, puede redirigir la base de estos códigos, usando una redirección HTTP:

$redirect = array("AU" => "http://australia.example.com", "NZ" => "http://newzealand.example.com") 
$url = $redirect[$code] 
header("Location: $url"); 

Sin embargo, esto provoca dos solicitudes HTTP y, por lo tanto, no es óptimo.Un mejor enfoque es utilizar el módulo de Apache para hacer volver a escribir, en su .htaccess archivo:

GeoIPEnable On 
GeoIPDBFile /path/to/GeoIP.dat 

# Redirect one country 
RewriteEngine on 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA 
RewriteRule ^(.*)$ http://www.canada.com$1 [L] 

# Redirect multiple countries to a single page 
RewriteEngine on 
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$ 
RewriteRule ^(.*)$ http://www.northamerica.com$1 [L] 

Por supuesto, una forma sin duda mejor de hacer esto es conseguir que otra persona lo haga por usted, por lo el nivel de DNS. Una búsqueda rápida reveló this company, (no tengo idea si son buenos o no) sin duda hay otros. Así es como lo hace Google.

+1

Respuesta muy clara. No hay necesidad de recomendar en otro lugar .. Gracias geek – Vijay

1

dependiente de la granularidad en el que desea dividir el "mundo" del cliente y el número de posibles objetivos (subdominios) se podría utilizar los datos proporcionados en el IP-to-country database o MaxMind.com's Free Geolocation Database, colóquelo en una tabla SQL y luego use una pequeña secuencia de comandos para realizar una búsqueda en la dirección IP del visitante y redireccionar según sea necesario.

Los datos nunca serán 100% precisos, especialmente si alguno de sus visitantes accede a su sitio a través de proxies u otros anonimistas (en cuyo caso la dirección IP que ve no es su dirección verdadera). Si implementa esto, sugeriría que valdría la pena incluir al usuario para permitirle corregir (o simplemente anular) la redirección regional.

0

Si no tiene ganas de codificarlo usted mismo, Evan tiene un guión genial llamado Lambda GeoIP. Verlo aquí: http://www.lambdageoip.com

Lambda GeoIP es una secuencia de comandos de segmentación geográfica completamente autohospedada que puede usar en su sitio web para determinar la ubicación geográfica de sus visitantes. Además de eso, puede determinar si un usuario está en un dispositivo móvil, un bot o usando una conexión satelital.

También puede reenviar usuarios a diferentes páginas según su continente, país, región o ciudad.

Todas las funciones se pueden utilizar en su sitio con solo 1 línea de código en PHP.

Lambda GeoIP no "teléfono a casa", carga contenido remoto o se comunica con ningún otro servidor. Es seguro y totalmente alojado.

0

Si no le importa descargar, instalar y mantener actualizada una base de datos de IP en su servidor, entonces la solución de Fmark es la mejor en términos de rendimiento. De lo contrario, puede usar un servicio de redirección como www.redirectbycountry.com

0

Una versión es que puede usar la dirección IP de su proveedor de servicios y redirigirla con Javascript de la siguiente manera;

$.get("https://ipinfo.io", function(response) { 
    if(response.country=="GB"){ 
     window.location.replace("http://stackoverflow.com"); 
    } 
}, "jsonp"); 
Cuestiones relacionadas