Verovatno ste već bili u prilici da koristite Google Analytics alat, gde između ostalog možete na mapi sveta videti odakle tačno dolaze posetioci vašeg sajta, ili ste tu i tamo posetili sajt koji bi Vam između ostalog izbacio podatke o Vašoj trenutnoj lokaciji. Naravno, nije u pitanju nikakva magija, tačna lokacija posetioca definisana je na osnovu njegove IP adrese, a tehnologija koja se koristi prilikom "lociranja" korisnika opšte je poznata pod nazivom GeoIP.
Danas ćemo pričati o tome kako "locirati" posetioca pomoću PHP-a i Max Mind-ove GeoIP baze. U primerima koji slede koristićemo besplatne(lite) verzije GeoIP baza, obzirom da se za pune verzije plaća $50USD + $12USD za update (GeoIP Country baza) i $370USD + $90USD za update (GeoIP City baza). Mana lite verzija je što nisu uvek 100% ažurne, ali će odlično poslužiti za naš tutorijal, a iz ličnog iskustva tvrdim da su upotrebljive i u većini live projekata.
MaxMind obezbeđuje API za nekoliko popularnih programskih jezika, (kompletna lista dostupna je na http://www.maxmind.com/app/api), a detalji o PHP API-u dostupni su ovde. Pored takozvanog "Pure PHP API-a" koji ćemo ovde koristiti, postoje i PECL ektstenzija kao i apache modul(mod_geoip), koji pružaju bolje perfomanse ali i komplikovaniji setup.
$ip = $_SERVER['REMOTE_ADDR']; //ako testirate u lokalu koristite ovaj ip radi testa //posto ce $_SERVER['SERVER_ADDR'] biti 127.0.0.1 //$ip = "89.216.226.174";
echo "Zemlja iz koje nas posecujete je: $country_name <br />";
echo "Skracena Oznaka: $country_code <br />";
} else {
echo "Nazalost, nismo bili u mogucnosti da vas lociramo.";
}
geoip_close($gi);
?>
Dakle, na početku uključujemo geoip.inc koji sadrži sve f-je potrebne za korišćenje GeoIP County baze, zatim kreiramo novu instancu GeoIP klase pomoću geoip_open f-je, i na kraju pozivamo odgovarajuće f-je (geoip_country_name_by_addr i geoip_country_code_by_addr) da bi smo dobili ime/kod zemlje u kojoj se nalazi ip adresa posetioca(u slučaju da testirate u lokalu nemojte koristiti $_SERVER['REMOTE_ADDR']).
Kao izlaz skripta, trebalo bi da dobijemo nešto poput:
Zemlja iz koje nas posecujete je: Serbia and Montenegro Skracena Oznaka: CS
F-je koje smo koristili da bi dobili podatke o zemlji posetioca, samo su neke od f-ja koje su dostupne u API-u. Ostatak možete i sami pronaći jednostavnom analizom PHP sourca geoip.inc fajla.
GeoIP City
A sada da proširimo podatke o zemlji sa tačnom lokacijom (grad, poštanski kod itd).
Kao što vidite, PHP kod je sličan kodu za detekciju zemlje, s tim što smo koristili geoipcity.inc kao i GeoLiteCity.dat bazu. F-ja geoip_record_by_addr($gi, $ip) vraća instancu klase 'geoiprecord' koja sadrži kao promenljive(osobine) podatke o lokaciji koje koristimo u gornjem kodu. Nakon pokretanja skripta trebalo bi da dobijemo nešto poput:
Zemlja: Serbia and Montenegro Skracena Oznaka: CS Skracena Oznaka2: SCG Region: 02 Grad: Beograd Postanski Kod: Geog. Sirina: 44.8186 Geog. Duzina: 20.4681
Napominjem da je GeoIP baza najažurnija kada su u pitanju gradovi sa severnoameričkog dela planete, dok je njena preciznost znatno manja kada se dođe do "egzotike" u koju nažalost spada i Srbija.
CaseStudy - Redirekcija na osnovu IP adrese
--------------------------------------------
Za kraj znanje stečeno ovde iskoristićemo u jednom pravom projektu. Naime cilj je da se na dvojezičnom sajtu(blogu) korisnici koji dolaze iz Srbije usmere na srpsku verziju sajta, dok će se svi ostali usmeriti na englesku verziju. Evo kako to izgleda:
header("HTTP/1.1 301 Moved Permanently"); header('Location: http://www.dinke.net/blog/sr/');
}
else
{
header("HTTP/1.1 301 Moved Permanently"); header('Location: http://www.dinke.net/blog/en/');
}
?>
Primer koji vidite gore koristi se na blogu autora ovog teksta, kako bi sve korisnike koji ne dolaze iz Srbije automatski preusmerio na englesku verziju bloga. Slanje custom 301 redirection headera je važno kako bi botovi (Google i sl.) indeksirali strane na odgovarajući način.
Dragan Dinić je 32-godišnji Web programer sa preko 5 godina iskustva u razvoju LAMP based aplikacija. U slobodno vreme Dragan vodi svoj blog ili diskutuje o Internet tehnologijama na raznim Web forumima.
Ovo je arhivirana verzija originalne stranice. Izvinjavamo se ukoliko, usled tehničkih ograničenja,
stranica i njen sadržaj ne odgovaraju originalnoj verziji.
Lideri EU, koji će se sastati sa predsednikom SAD Donaldom Trampom i američkim zvaničnicima na marginama Svetskog ekonomskog foruma u Davosu, "cepaju" svoje beleške o Ukrajini, navodi Fajnenšel tajms.
Mađarska kompanija MOL i ruski Gasprom su dogovorili osnovne odredbe budućeg kupoprodajnog ugovora za NIS koji će biti upućen američkom OFAK-u na odlučivanje, a Srbija je takođe povećala udeo.
U meču poslednjeg kola druge faze Evropskog prvenstva u vaterpolu sastaju se Srbija i Crna Gora (20.30), nekada zajednička selekcija, a u poslednje dve decenije veliki sportski rivali.
U Kataloniji u blizini Barselone došlo je do nesreće kada je prigradski voz na liniji R4 iskočio iz šina nakon što je udario u zaštitni zid koji je pao na prugu, usmrtivši mašinovođu i teško povredivši četiri osobe, dok je još 34 lakše povređeno.
Rat u Ukrajini – 1.427. dan. Ukrajinski predsednik Volodimir Zelenski izjavio je da je Rusija tokom noći izvela napad na Ukrajinu, koristeći više od 300 dronova i "značajan" broj balističkih i krstarećih raketa.
Novi ministar odbrane Mihailo Fedorov tokom sastanka sa novinarima, iznoseći prioritete svog mandata, rekao je da Ukrajina želi da "ubija 50.000 Rusa mesečno".
Nekako posle Bogojavljenja 19. januara ove godine dolazi u posetu Srbiji Parlamentarna delegacija EU na čelu sa Toninom Piculom, izvestiocem za Srbiju.
Britanski komičar i glumac Rasel Brend pojavio se danas pred sudom u Londonu putem video-linka iz SAD, gde se suočava sa dve nove optužbe za seksualne delikte, uključujući silovanje.
Deca iranske vladajuće elite se hvale luksuznim životima, a istovremeno hiljade običnih Iranaca ubijaju na ulici jer su se suprotstavili moćnim porodicama koje vode Islamsku Republiku.
Pevačica Britni Spirs (42) i dalje privlači veliku pažnju na društvenim mrežama, gde često objavljuje neobične i provokativne snimke koji uznemiruju deo njenih pratilaca.
Privatni avion Bila Gejtsa viđen je u Davosu dok se najbogatiji i najmoćniji akteri svetske ekonomije okupljaju na Svetskom ekonomskom forumu (WEF) u Švajcarskoj.
Glumac Stelan Skarsgard potvrdio je da se u filmskim krugovima intenzivno radi na tome da se pronađe način za povratak lika koji tumači Meril Strip u predstojećem trećem nastavku hit franšize "Mamma Mia".
Gledaoci poslednjih godina sve češće posežu za filmovima koji klasične žanrove okreću u neočekivanom pravcu, nudeći sporiji ritam, snažnu atmosferu i duboku psihološku slojevitost.
Na današnji dan, 20. januara 2008. godine, prvi put je emitovana dramska serija "Breaking Bad", koja je veoma brzo prikovala milione gledalaca širom sveta za male ekrane.
The victory of the Serbian water polo team over Hungary secured their place in the European Championship semifinals, gave them some peace ahead of the final match against Montenegro, but also brought a degree of fatigue.
Danish MP and Chairman of the Danish Parliament’s Defense Committee, Rasmus Jarlov, warned in an interview with CNN that a potential U.S. military intervention in Greenland would mean war between Denmark and the United States.
Aleksandar Vučić is in Davos, participating in the World Economic Forum. There, he spoke about the numerous wars that have occurred and are still ongoing in the world, as well as the situation we can expect globally.
Aleksandar Vučić stated in Davos, where the World Economic Forum is being held, that difficult times lie ahead, as the world is heading in a “crazy direction” due to the conflict between the EU and the United States over Greenland.
Rusija planira da tokom 2026. godine započne serijsku proizvodnju domaće satelitske internet mreže, koja bi trebalo da predstavlja odgovor na američki Starlink.
Istraživači iz kompanije Check Point upozorili su na pojavu VoidLink-a, jednog od prvih poznatih primera naprednog malvera koji je u velikoj meri razvijen uz pomoć veštačke inteligencije.
Dok milioni gejmera širom sveta nestrpljivo iščekuju jesen 2026. godine za premijeru najambicioznijeg projekta u gejming industriji, Rockstar Games još jednom je pokazao svoju humanu stranu.
Komentari 3
Pogledaj komentare