IP Adresine Göre Yer Bulmak (XMLServices)
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.
Kod Dosyasını Yükle xmlloacation.txt
<% '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 vatandasin IP adresini alalim. strVatandasIP = 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://services.gabbara.com/xmllocation/?IP="&strVatandasIP&"") 'XML'i alacagimiz servisin adresi ve gönderilen parametre (vatandasin ip adresi) ' ///// 1. Kontrölü Yapiyoruz. (Servis Çalisiyormu) if xmlDoc.parseError.errorcode <> 0 then 'XML Service patladi... ' -> XML Service Patlarsa Direk Ingilizce Sayfaya Yönlendir. Response.Redirect("en/index.asp") else ' -> Sorun Yoksa Buradan Buyrun... ' -> Ilk Önce Isimize Yarayan Node'lari alalim. ' ///// 2. Kontrolü Yapiyoruz. (IP Adresi Bulunamadi?) ' -> Servis bize IP adresine bagli ülkeyi bulsada bulmasada her halükarda Error dügümünü döndürecektir. ' -> IP Adresini bulursa Error = 0 olarak döner Bulamazsa Error = 1 olarak döner. ' -> O yüzden bizde ilk önce bu tarz bir durum olustumu diye Error dügümünü kontrol ediyoruz. strError = xmldoc.selectSingleNode("countryRoot/Error").text ' Servisten dönen hata kodu if strError = "1" then ' Eger hata kodu 1 dönmüsse demekki hata var! ' Kardes biz senin nereye ait oldugunu bulamadik o yüzden sen ana dil olan ingilizceye git. 'Response.Redirect("en/index.asp") else ' Error kodu 1 den farkli döndüyse buda 0 demek zaten. O zaman diger parametreleri ver bakalim. strShortName = xmldoc.selectSingleNode("countryRoot/ShortName").text ' Ülkeye ait kisa isim örn : TR strLongName = xmldoc.selectSingleNode("countryRoot/LongName").text ' Ülkeye ait uzun isim örn : TURKIYE strRegion = xmldoc.selectSingleNode("countryRoot/Region").text ' Ülkenin bulundugu bölge örn : ASIA strIpCity = xmldoc.selectSingleNode("countryRoot/IpCity").text ' IP adresinin bulundugu sehir örn : ISTANBUL strLatitude = xmldoc.selectSingleNode("countryRoot/Latitude").text ' Ülkeye bagli harita enlemi örn : 32,5 strLongitude = xmldoc.selectSingleNode("countryRoot/Longitude").text ' Ülkeye bagli harita boylami örn : 132,52 strISP = xmldoc.selectSingleNode("countryRoot/ISP").text ' IP adresinin bagli oldugu ISP : TT ADSL-ALCATEL STATIC_GAY strIPDomain = xmldoc.selectSingleNode("countryRoot/IPDomain").text ' IP Adresinin bagli oldugu ISP ye ait web sitesi adresi örn : FORNET.NET.TR strFlagPath = xmldoc.selectSingleNode("countryRoot/FlagPath").text ' Ülkeye ait bayrak örn : http://services.gabbara.com/xmllocation/flags/[ULKE KISA KODU].gif end if ' 2. Kontrolün sonu. end if ' ///// 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. Hayde baslayalim! if strShortName = "TR" then 'Arkadas 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 'Arkadas Rusya dan! Response.Write "Rusça Hosgeldin!" 'Sayfaya yaz rusça 'Response.Redirect("ru/index.asp") 'Sayfayi rusça arabirimine yönlendir. elseif strShortName = "US" then 'Arkadas United States den! Response.Write "Welcome!" 'Sayfaya yaz ingilizce 'Response.Redirect("en/index.asp") 'Sayfayi ingilizce arabirimine yönlendir. elseif strShortName = "CN" then 'Arkadas Çin den! Response.Write "Çince Hosgeldin!" 'Sayfaya yaz çince 'Response.Redirect("cn/index.asp") 'Sayfayi çince arabirimine yönlendir. else ' Bu ülkelerin disinda biryerden geliyor. Response.Redirect("Nereden geldigini bilmiyoruz hocam?") 'Response.Redirect("selectlang.asp")' Dili kendi seçsin? 'Response.Redirect("en/index.asp")' Yada direk ingilizceye gitsin? end if ' Diger bilgileride yazalim hayde! Response.Write("<br /><br />") Response.Write strShortName & "<br>" & strLongName & "<br>" & strRegion & "<br>" & strIpCity & "<br>" & strLatitude & "<br>" & strLongitude & "<br>" & strISP & "<br>" & strIPDomain & "<br>" & strFlagPath ' Code Writed By : Cihan YILMAZ (cihanyilmaz.com) ' Sevgiler; %> |
Örnek sorgulama adresi : http://services.gabbara.com/xmllocation/?IP=203.162.183.222
Kodun nasıl çalıştığını görmek için http://services.gabbara.com/xmllocation/test.asp adresine girebilirsiniz.
| Print article | This entry was posted by Cihan on 09 Mayıs 2010 at 07:40, and is filed under XML Servisleri, Yazılarım. Follow any responses to this post through RSS 2.0. Yorum veya kendi sitenizden geribildirim yapabilirsiniz. |
