• Home »
  • PHP »
  • 3 modi per capire la nazione di un utente in base al suo IP

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);

 

Ilario Pellandini

::: Certified Web developer 2006-2018 ::: ::: www.IPELWEB.com :::

More Posts - Website