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.
Od početka ove godine u Italiji se primenjuju ažurirana pravila za korišćenje bankomata, koja utiču na način podizanja gotovine, identifikaciju korisnika i obračun naknada.
Hitna sednica Saveta bezbednosti Ujedinjenih nacija o Iranu održana je večeras na zahtev Sjedinjenih Američkih Država, a UN su upozorile da bi mogući vojni udari na Iran dodali "nestabilnost već zapaljivoj situaciji".
Niška banja važi za jednu od najstarijih termalnih banja u Srbiji, njene lekovite izvore koristili su još Rimljani, a danas privlači domaće i strane goste, stare i mlade.
Rat u Ukrajini – 1.424. dan. Rusija i Ukrajina su dogovorile privremeno primirje koje će omogućiti popravku preostalog rezervnog dalekovoda u nuklearki Zaporožje. Međutim, noć petak na subotu, nije prošla mirno.
Sedam osoba je poginulo, a tri su ranjene u masovnoj pucnjavi u neformalnom naselju Marikana u opštini Filipi, u oblasti Kejp Flats kod Kejptauna, saopštila je južnoafrička policija dodajući da je napad, prema preliminarni rezultatima istrage.
Više od 3.000 ljudi poginulo je u protestima širom Irana, saopštila je američka grupa za ljudska prava HRANA, dok je nakon osmodnevnog prekida zabeležen tek neznatan porast internet aktivnosti u zemlji.
Rat u Ukrajini – 1.424. dan. Rusija i Ukrajina su dogovorile privremeno primirje koje će omogućiti popravku preostalog rezervnog dalekovoda u nuklearki Zaporožje. Međutim, noć petak na subotu, nije prošla mirno.
Sedam osoba je poginulo, a tri su ranjene u masovnoj pucnjavi u neformalnom naselju Marikana u opštini Filipi, u oblasti Kejp Flats kod Kejptauna, saopštila je južnoafrička policija dodajući da je napad, prema preliminarni rezultatima istrage.
Više od 3.000 ljudi poginulo je u protestima širom Irana, saopštila je američka grupa za ljudska prava HRANA, dok je nakon osmodnevnog prekida zabeležen tek neznatan porast internet aktivnosti u zemlji.
Na pozive države i organe Skupštine Srbije koji su je imenovali na mesto vrhovne javne tužiteljke, Zagorka Dolovac se ne odaziva, ali na sastanke sa stranim ambasadorima, koji se dešavaju van svih protokola i nadležnog ministarstva, redovno odlazi, pišu mediji
Nemačka nikako da izadje iz mraka, zbog napada na energetsku infrastrukturu. U javnost je isplivao podatak koji baca novo svetlo na poreklo tog nasilja, piše "Srpski ugao".
Majka jednog od dece američkog milijardera Ilona Maska, infuenserka Ešli Sent Kler tužila je njegovu kompaniju xAI zbog seksualizovanih dipfejkova na društvenoj mreži X, prenosi danas BBC.
Emilija Klark (39), zvezda Igre prestola, otkrila je da je tokom snimanja nove serije "Ponies" povredila rebro – i to dok je snimala eksplicitnu scenu.
Glumac i reditelj Timoti Basfild (68) mogao bi biti osuđen na zatvorsku kaznu do 15 godina ako bude proglašen krivim po optužbama za seksualno zlostavljanje dece, saopštio je Kancelar okružnog tužioca okruga Bernalilo.
Večeras se u splitskoj dvorani Gripe održava koncert Marka Perkovića Tompsona, a pre početka koncerta, veliki broj publike u dvorani je počela da skandira "ajmo, ustaše".
Uzimanje paracetamola tokom trudnoće je bezbedno i nema dokaza da povećava rizik od autizma, ADHD-a i razvojnih problema kod dece, zaključili su stručnjaci koji su sproveli najnovije obimno istraživanje, prenosi danas BBC.
Učestalost mokrenja može biti pokazatelj opšteg zdravstvenog stanja, a optimalan broj odlazaka u toalet tokom dana zavisi od više faktora, uključujući i godine života.
Svakodnevni stres, od neočekivanih računa do osećaja potcenjenosti na poslu, može negativno uticati na zdravlje creva, upozorava nutricionistkinja Kim Plasa.
Amsterdam Shortcutz, jedinstvena globalna turneja kratkih filmova koja povezuje publiku i autore kratkih filmova, i ove godine se održava u Domu omladine Beograda.
Serbian President Aleksandar Vučić said today that he is confident Serbia will find a solution and accelerate its path toward the EU, adding that he is not boycotting Members of the European Parliament, but that they have shown great disrespect toward Serbia.
As Donald Trump threatens to use the U.S. military to seize Greenland, European officials and diplomats have begun quietly voicing a previously unspoken thought: what would it look like to strike back at Trump?
In the Arctic mountains of Norway, British Royal Marines are training in extreme conditions for a potential war with Russia, the Brussels-based portal Politico reported today.
The President’s media adviser, Suzana Vasiljević, stated today that talks on the takeover of the Russian stake in NIS have reached the final stage, and she expects negotiators to send the final document to the U.S. OFAC by the end of this week.
Google bi zahvaljujući svom novom AI modelu Gemini 3 mogao da preuzme vodeću ulogu u razvoju veštačke inteligencije, tri godine nakon što je kompanija bila zatečena lansiranjem alata ChatGPT kompanije Open AI.
Nastavljamo sa postprazničnim "paketićem" testova, a ovog puta predstavljamo vrlo zanimljiv primerak - najjeftiniji električni automobil na našem tržištu, Avantier Commuter.
Potpuno električni SUV model Hyundai Ioniq 9 osvojio je titulu za najbolji veliki SUV na dodeli nagrada za Automobil godine po izboru žena (WWCOTY) 2026.
Kao što naslov kaže, narednih dana imaćemo priliku da se družimo sa novim benzinskim modelom Chery Arrizo 8. U nastavku pročitajte kratku najavu, a onda trk u komentare i postavljajte pitanja!
Komentari 3
Pogledaj komentare