componente geo posicionamiento ip con cakephp
- abril 1, 2010
- 0 comentario/s
- CakePHP Tags: tutoriales
Con este componente podrás geo posicionar algunas secciones de tu web, mediante una base de datos con los países.
Se puede Geoposiciar un site entero pero no es nada recomendable por motivos de SEO, ya que al señor Google no le gusta nada. Pero puede ser útil para algunos fragmentos de html, como módulos de tienda de diferentes paises, geo posicionamiento de publicidades, etc..
1.- Obtener la base de datos de GeoLite
Descargar la última versión de la base de datos con los países de GeoLite.
Tarda un poco porque son casi 19MB
http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
Cuando se descargue hay que ubicarlo en la siguiente ruta [CakeDirectorio]/webroot/files/geolitecity.dat
2.- Crea el componente de cakephp
/app/controllers/components/geo_ip.php
class GeoIpComponent extends Object {
function lookupIp($ip)
{
App::import('Vendor','geoipcity');
$gi = geoip_open("files/geolitecity.dat", GEOIP_STANDARD);
$result = geoip_record_by_addr($gi, $ip);
geoip_close($gi);
return get_object_vars($result);
}
function findIp()
{
if(getenv("HTTP_CLIENT_IP"))
return getenv("HTTP_CLIENT_IP");
elseif(getenv("HTTP_X_FORWARDED_FOR"))
return getenv("HTTP_X_FORWARDED_FOR");
else
return getenv("REMOTE_ADDR");
}
}
3.- Descargar los archivos de la API
Descargar la API que controla la base de datos con las ciudades y países que has descargado en el punto 1.
Esta API controla las consultas y accesos a la base de datos de GeoIP. Si quieres informarte mas sobre los métodos y otras funciones puedes verlo aquí: http://www.maxmind.com/app/php
Descarga de la siguiente url: http://geolite.maxmind.com/download/geoip/api/php/ los siguientes archivos geoipregionvars.php, geoipcity.php, geoip.php y guárdalos en el siguiente path:
[CakeDirectorio]/app/vendors/geoipregionvars.php
[CakeDirectorio]/app/vendors/geoipcity.php
[CakeDirectorio]/app/vendors/geoip.php
4.- Implementar el Geo Posicionamiento en un controlador
/app/controllers/geo_ip_controller.php
class GeoIpController extends AppController {
var $name = 'GeoIpSample';
var $components = Array('GeoIp');
function index() {
$ip = $this->GeoIp->findIp();
$ip_loc = $this->GeoIp->lookupIp($ip);
$this->set('user_ip', $ip);
$this->set('user_location', $ip_loc);
}
}
5.- Mostrar los resultados en una vista
<p><?=$user_location['city']?>, <?=$user_location['region']?> <?=$user_location['country_name']?> es mi lugar favorito.</p> <p><small>Tu ip es: <?=$user_ip?></small></p>
Mostrar la longitud y latitud de los resultados obtenidos
<p> <strong>Longitud:</strong> <?=$user_location['longitude']?><br/> <strong>Latitud:</strong> <?=$user_location['latitude']?> </p>
6.- Geo Posicionamiento permanente en todos los controllers
Si quieres geo posicionar algún elemento en concreto de tu web de manera permanente, y que este geo posicionamiento se lleve a cabo en todos los controllers lo tendrás que incluir en el app_controller.php
/app/controllers/app_controller.php
class AppController extends Controller
{
var $components = Array('GeoIp');
function beforeFilter()
{
parent::beforeFilter();
$ip = $this->GeoIp->findIp();
$ip_loc = $this->GeoIp->lookupIp($ip);
// obtengo el codigo de pais y lo asigno a una variable.
$codigo_pais = $ip_loc['country_code'];
$this->set("codigo_pais",$codigo_pais);
}
}
Tags de búsquedas:
cakephp geoip, geoip cakephp, cakephp ip, geoposicionamiento ip javascript
Posts Relacionados:
- subir ficheros con swfupload componente cakephp Existe una herramienta genial para subir ficheros a un servidor con PHP, Javascript y un flash, se llama SwfUpload y muchos ya la conocerán, pero integrarla en CakePHP ha sido...
- Componente de AutoLogin para CakePHP, no cerrar sesión. Uso y manejo de Cookies En este artículo voy a explicar como trabajar con las cookies en CakePHP. El uso de cookies en aplicaciones web, en todo lo que llevo trabajando, es algo fundamental. Claro...
- Crear archivos PDF con CakePHP En este post voy a comentar lo que he hecho para crear archivos PDF con CakePHP. Los ingredientes para esta “receta” son: 1.- La librería TCPDF que se encarga de...
- Cakephp generar logs con $this->log(); Generar logs de datos en CakePHP es muy simple y útil con la función log() que es parte de la clase Object que es común para la mayoria de las...
- Una aplicación, multiples bases de datos CakePHP Tengo que lanzar un web para varios países y aprovecharé la potencia de CakePHP para realizar una sola plataforma con varias bases de datos. Cada base de datos almacenará el...

Te ha ayudado el artículo? Colabora!
RSS Feed