jueves, 30 de marzo de 2017

Php obtener geodatos con la ip

Veamos cómo podemos obtener datos de los visitantes de nuestra web, país, región, ciudad..., de una forma muy sencilla.
En otro post os esplico como podemos enviar estos datos a nuestra cuenta de mail.

Con geopluign.php: http://www.geoplugin.net/ podremos hacerlo, os explico cómo.

En la web del desarrollador podremos encontrar el geoplugin.class.php, enlace directo:
www.geoplugin.com/_media/webservices/geoplugin.class.php.tgz?id=webservices%3Aphp&cache=cache

Si hacemos una llamada del siguiente tipo: http://www.geoplugin.net/php.gp?ip=130.220.169.8, obtenemos una salida en forma de cadena con un objeto de PHP serializado.

Veamos dos ejemplos:

1º. Podemos usar $_SERVER[‘REMOTE_ADDR’] para obtener la dirección IP de nuestro visitante y llamar al servicio web.
$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'];

2º. Si abrimos  geoplugin.class.php podemos ver como se utiliza $_SERVER[‘REMOTE_ADDR’] y posteriormente se llama al servicio, tal y como hemos hecho en el ejemplo anterior.
<?php
require_once('geoplugin.class.php');
$geoplugin = new geoPlugin();

$geoplugin->locate();

// También podemos presentar los mismos resultados en una tabla.
echo "Geolocation results for {$geoplugin->ip}: <br />\n".
    "City: {$geoplugin->city} <br />\n".
    "Region: {$geoplugin->region} <br />\n".
    "Area Code: {$geoplugin->areaCode} <br />\n".
    "DMA Code: {$geoplugin->dmaCode} <br />\n".
    "Country Name: {$geoplugin->countryName} <br />\n".
    "Country Code: {$geoplugin->countryCode} <br />\n".
    "Longitude: {$geoplugin->longitude} <br />\n".
    "Latitude: {$geoplugin->latitude} <br />\n".
    "Currency Code: {$geoplugin->currencyCode} <br />\n".
    "Currency Symbol: {$geoplugin->currencySymbol} <br />\n".
    "Exchange Rate: {$geoplugin->currencyConverter} <br />\n";

if ( $geoplugin->currency != $geoplugin->currencyCode ) {
    //our visitor is not using the same currency as the base currency
    echo "<p>At todays rate, US$100 will cost you " . $geoplugin->convert(100) ." </p>\n";
}
}
?>

Y con esto imprimiremos los resultados que geolocalizan al visitante de nuestra web:

Geolocation results for 79.109.197.9:
City: Palma De Mallorca
Region: Balearic Islands
Area Code: 0
DMA Code: 0
Country Name: Spain
Country Code: ES
Longitude: 2.6502
Latitude: 39.5694
Currency Code: EUR
Currency Symbol: €
Exchange Rate: 0.9421

Muy sencillo como habéis visto.

No hay comentarios:

Publicar un comentario

Gracias por vuestros aportes.