mysql ip geolocation
Posted: febbraio 10th, 2009 | Author: Francesco Apollonio | Filed under: Guide, Programmazione | Tags: internet, ip, mysql, php | No Comments »
Leggendo qua e la ho mi son ritrovato su questa pagina. tante volte avrei voluto conoscere la localizzazione geografica di un indirizzo ip, per svariati motivi: sapere l’origine di un mio visitatore per esempio.
Bene ora tramite questo database mysql è possibile conoscere (approssimativamente) la localizzazione di un indirizzo ip.
Per poterlo utilizzare bisogna avere un server mysql sul quale fare l’import del database, vi consiglio di farlo tramite la linea di comando del server per non avere problemi data la dimensione del file, questo è il comando da dare:
source /path/to/ipinfodb.sql
successivamente è necessario possedere l’indirizzo ip da ricercare (ovviamente
) nella forma `a.b.c.d` e utilizzando la formula:
(256*a + b) * 256 + c
calcolarsi il valore con cui fare la ricerca. Questa è la query:
SELECT * FROM `ip_group_city` where `ip_start` <= 4881709 order by ip_start desc limit 1;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php if (!isset($_GET['ip'])){ ?> <form action="searchip.php" method="get"> <input type="text" name="ip" /><br /> <input type="submit" /> </form> <? } else { //QUESTO SCRIPT NON È SICURO (NON C'È CONTROLLO SULL'INPUT), UTILIZZATELO SOLO PER DELLE PROVE LOCALI! $split = explode(".", $_GET['ip']); $COUNT = (256*$split[0] + $split[1]) * 256 + $split[2]; $QUERY = 'SELECT * FROM `ip_group_city` where `ip_start` <= '.$COUNT.' order by ip_start desc limit 1;'; mysql_connect('localhost', 'username', ''); mysql_select_db("test"); $res = mysql_query($QUERY); $arr = mysql_fetch_array($res); echo "Country: ".$arr['country_code']."<br />City: ".$arr['city']; } ?> |






