Hay muchos servicios que no son gratuitos y le ofrecen como desarrollador una API fácil de recuperar el país desde donde un visitante está accediendo a nuestro sitio web, continente datos geográficos de una solicitud de servidor. Sin embargo, hay algunos desarrolladores que no quieren pagar, al menos todavía no por el servicio porque solo se está probando. La página geoplugin.net ofrece una API gratuita para recuperar el país del usuario que realiza una solicitud a nuestro servidor. Y en este post vamos a ver de una manera muy practica Cómo detectar el país de un visitante con php.
Cómo funciona
Se necesita realizar un petición a la API geoplugin.net/json.gp pasando un solo parámetro que debe ser la dirección ip del visitante.
Información disponible
Podemos recuperar información importante de forma gratuita, las siguientes claves están disponibles en el objeto:
- geoplugin_request: Contiene la IP que acabamos de enviar en el parámetro de obtención de IP.
- geoplugin_status: Obtiene código de estado http de la solicitud
- geoplugin_city: la ciudad de la solicitud IP (si está disponible)
- geoplugin_countryCode: Obtiene 2 caracteres de la ciudad, ejemplo: (US, DE, RU)
- geoplugin_countryName: Nombre del país visitante
- geoplugin_continentCode: Nombre del continente visitante.
- geoplugin_currencyCode: Obtiene el código de la moneda del país visitante (EUR, USD)
- geoplugin_regionCode: Código de la región
- geoplugin_regionName: Nombre de la región
- geoplugin_currencySymbol: Símbolo HTML de la moneda.
Cómo usarlo con PHP
Con PHP, la cosa es realmente fácil, necesitamos recuperar la IP de la solicitud usando la variable nativa de php $_SERVER que contiene información sobre la solicitud del visitante. Luego, necesitamos recuperar la información desde la página web mencionada (que en realidad devolverá una respuesta JSON, pero debemos convertirla en un arreglo mediante la función json_decode. Veamos como se hace.
1 2 3 4 5 6 7 8 9 10 |
<?php $ip = $_SERVER['REMOTE_ADDR']; // Esto contendrá la ip de la solicitud. // Puedes usar un método más sofisticado para recuperar el contenido de una página web con PHP usando una biblioteca o algo así // Vamos a recuperar los datos rápidamente con file_get_contents $dataArray = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip)); var_dump($dataArray); echo "Hola visitante desde: ".$dataArray["geoplugin_countryName"]; |
Esta información ha sido tomada del sitio web oficial de la API, si deseas echarle un vistazo puedes hacerlo en el siguiente enlace: https://www.geoplugin.com