Cómo obtener geodatos de una dirección IP en PHP
Cuando desarrollamos servicios web, puede resultarnos de interés conocer geodatos de nuestro visitante: ciudad, región, código de área, etc. ¿Cómo averiguar estos datos usando PHP? Muy simple, haciendo una llamada a geoplugin.net.
Si hacemos una llamada del siguiente tipo (la dirección IP es la del servidor DNS de la UCO): http://www.geoplugin.net/php.gp?ip=150.214.110.3, obtenemos una salida en forma de cadena con un objeto de PHP serializado.
Por lo tanto nos limitaremos a:
- Hacer una llamada a dicho servicio web
- Descargar el resultado de la petición en forma de cadena con la función file_get_contents()
- Usar el proceso inverso a serializar para recuperar los diferentes valores
Podemos usar $_SERVER[‘REMOTE_ADDR’] para obtener la dirección IP de nuestro visitante. Aquí tenéis un ejemplo completo:
$meta = unserialize(file_get_contents(' http://www.geoplugin.net/php.gp?ip='.$_SERVER['REMOTE_ADDR'])); $latitud = $meta['geoplugin_latitude']; $longitud = $meta['geoplugin_longitude']; $ciudad = $meta['geoplugin_city'];