Por la Redacción de FoxPress
Para poder personalizar la información recabada de la web o la que se
le da al usuario que accede es necesario personalizarla a su idioma, pais,
edad, etc...
Este
artículo usa la base de datos de IP’s del mundo para saber de donde viene un
usuario.
Esa base de datos en formato csv la puedes conseguir de http://ip-to-country.webhosting.info/
después de registrarte te dará http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip
Los
procesos a realizar serían:
1.-
Descomprime ese fichero ZIP en el CSV que tiene desntro.
2.-
Create la siguiente tabla en MySQL
CREATE TABLE iptocountry (IP_FROM double NOT
NULL default '0',
IP_TO
double NOT NULL default '0',
COUNTRY_CODE2 char(2) NOT NULL default '',
COUNTRY_CODE3 char(3) NOT NULL default '',
COUNTRY_NAME
varchar(50) NOT NULL default '',
KEY
CODE (IP_FROM,IP_TO,COUNTRY_CODE2)
) ENGINE=MyISAM
3.- Inserta los registros del CSV en tu MySQL con:
LOAD DATA LOCAL
INFILE 'C:/ip-to-country.csv' INTO TABLE iptocountry FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
4.-
A continuación para saber el Pais al que se corresponde una IP puedes escribir
en PHP:
$ip = $_SERVER["REMOTE_ADDR"];
/* transformacion de la IP
*/
$dotted = preg_split( "/[.]+/", $ip);
$ip2 = (double) ($dotted[0]*16777216)+($dotted[1]*65536)+($dotted[2]*256)+($dotted[3]);
$lcCAdena= "SELECT COUNTRY_NAME FROM
IPTOCOUNTRY WHERE $ip2 BETWEEN IP_FROM AND IP_TO" ;
$resultado=mysql_query($lcCAdena,$link)
;
$row = mysql_fetch_array($resultado);
echo
$row['COUNTRY_NAME'];
De
esta forma ya sabes de qué pais viene un usuario.
Este
código te da el pais, pero puede ser que te interese saber la ciudad y su
geo-localización.
Para
eso puedes acudir a http://www.hostip.info.
Ahí poniendo la IP te dice el pais, la ciudad y sus coordenadas siempre que
tenga una IP fija.
Por
ejemplo, si pongo:
http://api.hostip.info/get_html.php?ip=80.24.123.135&position=true
me
dice:
Country: SPAIN (ES)
City: Zaragoza
Latitude: 41.6333
Longitude: -0.883333
Lo
que viene a decir que la sede de FoxPress está en SPAIN (Zaragoza) y su latitud
y longitud. Si a continuación vas al Google Maps y pones esas coordenadas. Verás
que el sistema se equivoca en 1 kilometro más o menos:
Si
por el contrario la instrucción fuera:
http://api.hostip.info/?ip=80.24.123.135
Me
daría la respuesta en XML:
FoxPress – Septiembre de
2006