Merhaba, geçtiğimiz günlerde bir proje için IP bilgisi üzerinden şehir bilgisi almam gerekti. Bunun için de bir dizi araştırmalarda bulundum. Öncelikle bunu bir platform üzerinden almak en hızlı ve en etkili çözüm. Dolayısıyla bir IP servisi üzerine istekte bulunuyor geri dönüş değeri olarak bize Şehir ve Ülke bilgileri gibi farklı bilgiler de geliyor. Ancak şuan için bizim için önemli olan ülke ve şehir bilgileri.
Her web site sahibinin ziyaretçileri hakkında edinmesi gereken bilgiler vardır. Sitede dolaşma süreleri, hangi başlıklarla daha çok ilgilenildiği ve ziyaretçilerin hangi şehir/ülke insanları tarafından ziyaret edildikleri gibi bilgiler web sitenizi geliştirmek için kullanılan önemli bilgilerden bazılarıdır. Ziyaretçilerin lokasyon bilgileri ürettiğiniz içeriğe veya satışını yaptığınız ürünlere ne gibi geliştirmeler yapabileceğiniz hakkında size bazı ip uçları verebilir. Örneğin yurt dışından ziyaret edilme oranınızda bir artış gördüyseniz siteniz için Protranslate ile web site lokalizasyonu hizmeti gibi servislerden yararlanmak ve dijital alandaki varlığınızı profesyonelleştirebilme gibi seçenekleri göz önünde bulundurabilirsiniz.
Birkaç farklı platform denemesi yaptım, ancak en etikili bulduğum ipinfodb ve ipinfo.io servislerini size önereceğim.
Ben ipinfo.io üzerinde karar kıldım ve bunu kullandım, yukarıda belirttiğim gibi etkili ve stabil çalışıyor. Şimdi sizlerle birlikte bir örnek uygulama yapalım.
Örnek JSON
1 2 3 4 5 6 7 8 9 10 11 | $ curl ipinfo.io/8.8.8.8 { "ip": "8.8.8.8", "hostname": "google-public-dns-a.google.com", "loc": "37.385999999999996,-122.0838", "org": "AS15169 Google Inc.", "city": "Istanbul", "region": "TR", "country": "TR", "phone": 650 } |
PHP Örnek
1 2 3 | $ip = $_SERVER['REMOTE_ADDR']; $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); echo $details->city; // -> "Istanbul" |
Bonus: ipinfodb Örneği (PHP)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php include 'class.IPInfoDB.php'; // Load the class $ipinfodb = new IPInfoDB('YOUR_API_KEY'); $results = $ipinfodb->getCity($_SERVER['REMOTE_ADDR']); echo "Result \n"; if (!empty($results) && is_array($results)) { foreach ($results as $key => $value) { echo $key . ' : ' . $value . " \n"; } } |
Bonus2: ipinfodb Örneği (C#)
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | public partial class ipinfodb : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { WebAPI(); } private void WebAPI() { string myIP = HttpContext.Current.Request.UserHostAddress; string strQuery; string key = ""; HttpWebRequest HttpWReq; HttpWebResponse HttpWResp; strQuery = "http://api.ipinfodb.com/v3/ip-city/?" + "ip=" + myIP + "&key=" + key + "&format=json"; JavaScriptSerializer serializer = new JavaScriptSerializer(); HttpWReq = (HttpWebRequest)WebRequest.Create(strQuery); HttpWReq.Method = "GET"; HttpWResp = (HttpWebResponse)HttpWReq.GetResponse(); System.IO.StreamReader reader = new System.IO.StreamReader(HttpWResp.GetResponseStream()); string content = reader.ReadToEnd(); dynamic item = serializer.Deserialize<object>(content); string city = item["cityName"]; string countryc = item["countryCode"]; string countryn = item["countryName"]; string region = item["regionName"]; string lat = item["latitude"]; string longi = item["longitude"]; string timez = item["timeZone"]; string zip = item["zipCode"]; //displaying the result Response.Write("Welcome Visitors from " + city + "<br />"); Response.Write("Your IP address: " + myIP + "<br />"); Response.Write("Country Code: " + countryc + "<br />"); Response.Write("Country Name: " + countryn + "<br />"); Response.Write("Region Name: " + region + "<br />"); Response.Write("Latitude: " + lat + "<br />"); Response.Write("Longitude: " + longi + "<br />"); Response.Write("Time Zone: " + timez + "<br />"); Response.Write("Zip Code: " + zip + "<br />"); } } |