Menu

Geolocation sau Cum aflii tara unui IP

Sa fiu sincer eu nu m-am lovit niciodata de problema asta, si anume a afla tara de unde este un IP dar s-au lovit altii destul cat si pentru mine.
De retinut este ca se poate afla si locatia exacta(ex strada), dar ar fi strada unde este localizat ISP-ul(firma de unde are internet) si nu unde este sta cel din spatele IP-ului deci total nerelevant si nefolositor.


Nu o sa incep cu baze de date imense pentru geolocation, o sa folosim un API deoarece este usor si mult mai recomandat de catre mine.

In caz ca nu stii ce este un API este extrem de necesar sa citesti articolul Ce este API

Pentru a nu te complica, am scris o functie documentata care returneaza tara de unde este acel IP astfel incat este usor de folosit dar si buna pentru a invata:
<?php  
/**
 * Functie folosita pentru aflarea locatiei(tarii) unui IP.
 * @param string $ip IP-ul caruia sa doreste aflarea locatiei.
 * @return string Locatia(tara) IP-ului
 */
function get_country($ip){
	// Observati ca folosim file_get_contents() pentru a face cerea
	// Folosim json_decode() pentru a transforma stringul JSON intr-un obiect
	$json_resp = json_decode( file_get_contents("http://www.geoplugin.net/json.gp?ip=$ip") );
	return $json_resp->geoplugin_countryName;
}
?>


Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Tutoriale, Programare Web, Php

Comments Nota 5 din 2
ViRii
Salut, incearca cu api-ul celor de la hxxp://www.geoips.com/en/geolocation, returneaza si Owner-ul ipului
Ionut Bajescu
Prin ownerul ip-ului te referi la ISP? Ai dreptate, ei ofera mai multe detalii dar folosirea API-ului lor implica si creearea unui cont si de la 100 query-uri in sus este impusa o taxa iar acesti doi factori ar fi complicat articolul.
ViRii
da, pe langa toate detaliile alea :\"identify IP addresses accurately and in real-time\". Pentru uz propriu e ok 100 interogari/zi, la nevoie se pot face mai multe conturi :))
Ionut Bajescu
Bine spus :)) Problema e ca tutorialul asta a fost gandit cand am vazut ca avea cineva nevoie sa verifice niste ip-uri(de exemplu root-uri) si trebuia sa functioneze in cantitati cat mai mari, am apelat la primul si cel mai simplu API gasit pe google.