3 modi per capire la nazione di un utente in base al suo IP
A volte è utile poter capire la nazione di un utente in base al suo indirizzo IP. Questo script può essere usato per delle funzioni di geo-target, come ad esempio consentire il traffico solo da alcune nazioni e bloccare le altre. Ecco quindi 3 buoni sistemi gratuiti per individuare la nazione di provenienza di un utente partendo dal suo IP:
Sistema 1: geobytes.com
Questo sistema è gratuito e molto semplice da utilizzare, infatti non necessita di alcuna installazione e per utilizzarlo bastanoun paio di righe di codice in PHP. Attenzione pero: le richieste sono limitate, e, so per esperienza che a volte la nazione riportata è sbagliata.
$ip = $_SERVER['REMOTE_ADDR']; $country = get_meta_tags('http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress='.$ip); print_r( $country ); // oppure: echo $country['iso2'];
Sistema 2: ip2nation (consigliato)
Questo è il mio sistema preferito, sempre gratuito e abbastanza accurato, al contrario di quello sopra per utilizzarlo bisogna importare 2 tabelle MySQL (volendo anche 1 sola), le tabelle sono scaricabili dal sito ufficiale: ip2nation.com. Poi l’utilizzo del sistema è abbastanza semplice:
// ritorna l'iso della nazione: $result = mysql_query( "SELECT country FROM ip2nation WHERE ip < INET_ATON( '$ip' ) ORDER BY ip DESC LIMIT 1" ); // ritorna il nome completo della nazione $result = mysql_query( "SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE i.ip < INET_ATON('$ip') AND c.code = i.country ORDER BY i.ip DESC LIMIT 1" );
Sistema 3: maxmind
Questo è un sistema che ho appena scoperto e che sto provando. Si dice che sia ancora più accurato di ip2nation e a parte la mancanza di documentazione (anche dovuta dalla moltitudine di versioni disponibili). Per utilizzarlo ci sono diversi modi, ma più semplice è quello di scaricare il Database lite “.dat” e il file “geoip.inc” e usarlo cosi:
include("geoip.inc"); $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD); echo geoip_country_code_by_addr($gi, $ip); geoip_close($gi);
SOCIAL NETWORK