IP Adresine göre lokasyon / yer bulmak. (XMLLocation)

Internet üzerinde birçok kişinin arayıpta ücretli servisler haricinde çokta bulamadığı kendi yazdığım bir xml servisi sizlerle paylaşmak istedim. Servisimizin adı XMLLocation. Bu servise örnek olarak IP2Location adresini verebiliriz. Birçok çoklu dil destekleyen siteler kullanıcının kullandığı ip adresini baz alarak bulunduğu ülkeye göre kendi içinde otomatik olarak kullanıcının kendi kullanma ihtimali olan dile yönlendiriyor.

Bu serviste parametre olarak gönderilen ip adresinin karşılığında birçok lokasyon, ISP, Harita enlem ve boylamları, ülkeye ait bayrak gibi değerleri döndürebiliyor. Servisi sorguladığımız yer olarak ben http://www.freegeoip.net adresini kullandım. Sorgulama limiti yok ve gayet hızlı sonuç döndüren bir site.

Kullandığım ülke bayraklarını http://www.cihanyilmaz.com/flags.zip adresinden indirebilirsiniz.

<%
 
' Test Için IP Adresleri (Bunlar proxy ip adresleri)
' Türkiye = 212.146.133.136
' Rusya = 82.162.57.63
' United States = 63.149.98.70
' Çin = 61.129.159.201
 
' ///// Siteye Gelen ziyaretçinin IP adresini alalim.
strVisitorIP = Request.ServerVariables("REMOTE_ADDR") 'Test için yukaridaki ip adreslerini kullanabilirsiniz.
' ///// XML Nesnemizi olusturalim (XML Service Için)
set xmlDoc = createObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.setProperty "ServerHTTPRequest", true
xmlDoc.load("http://www.freegeoip.net/xml/"&strVisitorIP&"") 'XML'i alacagimiz servisin adresi ve gönderilen parametre (ziyaretçinin ip adresi)
 
' ///// 1. Kontrölü Yapiyoruz. (Servis Çalisiyormu)
if xmlDoc.parseError.errorcode <> 0 then 'XML Service hata varsa...
' -> XML Service Sorun Varsa Direk Ingilizce Sayfaya Yönlendir.
    Response.Redirect("en/index.asp")
else ' Error kodu 1 den farkli döndüyse sorun yok demektir. O zaman diger parametreleri alalım.
    Dim strIP, strShortName, strLongName, strRegionCode, strRegion, strCity, strLatitude, strLongitude, strCountryFlag
    strIP           = xmldoc.selectSingleNode("Response/Ip").text ' Sorgulanan IP
    strShortName    = xmldoc.selectSingleNode("Response/CountryCode").text ' Ülkeye ait kisa isim örn : TR
    strLongName     = xmldoc.selectSingleNode("Response/CountryName").text ' Ülkeye ait uzun isim örn : TURKIYE
    strRegionCode   = xmldoc.selectSingleNode("Response/RegionCode").text ' Ülkenin bulundugu bölge örn : 34
    strRegion       = xmldoc.selectSingleNode("Response/RegionName").text ' Ülkenin bulundugu bölge örn : ASIA
    strCity         = xmldoc.selectSingleNode("Response/City").text ' IP adresinin bulundugu sehir örn : ISTANBUL
    strLatitude     = xmldoc.selectSingleNode("Response/Latitude").text ' Ülkeye bagli harita enlemi örn : 32,5
    strLongitude    = xmldoc.selectSingleNode("Response/Longitude").text ' Ülkeye bagli harita boylami örn : 132,52
end if

' ///// Ziyaretçi ülke bayrağı eklemek istedim :) Flagları http://www.cihanyilmaz.com/flags.zip adresinden indirebilirsiniz.
    strCountryFlag  = "http://www.cihanyilmaz.com/flags/gif/"&LCase(strShortName)&".gif"
 
' ///// Simdi sira geldi hangi dil için nereye gidecegine
' -> Kisa kodlar ülke kodlari ile ayni döner yani bilinen Türkiye için TR Rusya için RU United States (Ingiltere) için US Çince için CN gibi.
' -> Biz simdi yukarida yazan toplam 4 farkli ülkeyi kontrol edecegiz. Sekilde ziyaretçinin geldigi kisa koda göre islem yaptiriyoruz.

if strShortName = "TR" then ' Turkiye den!
    Response.Write "Hosgeldiniz!" 'Sayfaya yaz türkçe
    'Response.Redirect("tr/index.asp") 'Sayfayi türkçe arabirimine yönlendir.
elseif strShortName = "RU" then 'Rusya dan!
    Response.Write "Добро пожаловать!" 'Sayfaya yaz rusça
    'Response.Redirect("ru/index.asp") 'Sayfayi rusça arabirimine yönlendir.
elseif strShortName = "US" then 'United States den!
    Response.Write "Welcome!" 'Sayfaya yaz ingilizce
    'Response.Redirect("en/index.asp") 'Sayfayi ingilizce arabirimine yönlendir.
elseif strShortName = "CN" then 'Çin den!
    Response.Write "歡迎!" 'Sayfaya yaz çince
    'Response.Redirect("cn/index.asp") 'Sayfayi çince arabirimine yönlendir.
else
    'Bu ülkelerin disinda bir yerden geliyor.
    'Response.Redirect("selectlang.asp")' Dili kendi seçsin?
    'Response.Redirect("en/index.asp")' Yada direk ingilizce sayfaya yönlendirilsin?
end if

%>