الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اعرف اسم دولة زائر موقعي

بدأه AboSomia في 29 يونيو 2016 · 5 رد · 766 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحم الله وبركاته

كل عام وانتم بخير وتقبل الله صيامكم وقيامكم

بحثت في الانترنت عن طريقة لمعرفة اسم دولة زائر موقعي لكني وجدت طريقة لمعرفة IP   الزائر فقط

وجدت مواقع لكن المشكلة بفلوس

اتمنى لو تدلوني على مكتبة في ASP.NET تقوم بهذا العمل

او من لديه قاعدة بيانات يستخدمها في مواقعه ومجربه بها جميع الدول ومدى اي بي كل دولة (From ..... TO)

وتقبلوا تحياتي

تم تعديل هذه المشاركة بواسطة AboSomia في 29 يونيو 2016 في 19:00

#2

هناك خدمة GeoLite2 من MaxMind، حيث تقدم قاعدة بيانات مجانية تحدث أول ثلاثاء من كل شهر لأسماء الدول وعناوين الـIP الخاصة بها، مع API للـ.NET.

يمكنك تحميل قاعدة البيانات من صفحة التحميلات، انزل للأسفل عند GeoLite2 Country، حمل قاعدة البيانات وفك الضغط عنها وضعها في مشروعك في فجيول ستديو، اضغط على قاعدة البيانات في الـsolution explorer، ومن Properties عدل Copy to Output Directory إلى Copy if newer كي تنسخ قاعدة البيانات لملف الـbin، ثم ثبت المكتبة الخاصة بها من NuGet باستخدام:

Install-Package MaxMind.GeoIP2 -Pre

تحتاج أن تعرف قارئ البيانات مرة واحدة في أي فئة (thread-safe):

private static readonly DatabaseReader CountriesDatabaseReader = new DatabaseReader("GeoLite2-Country.mmdb");

يمكنك الآن الاستعلام عن أي IP:

var countryResponse = CountriesDatabaseReader.Country("172.217.19.67");

Debug.WriteLine($"ISO code : '{countryResponse.Country.IsoCode}'");
Debug.WriteLine($"    Name : '{countryResponse.Country.Name}'");

عناوين الـIP تتغير لذا تحتاج لتحديث قاعدة البيانات بين فترة وفترة (لديهم خدمة ويب لاتحتاج التحديث لكنها مدفوعة).

تم تعديل هذه المشاركة بواسطة Mr.B في 30 يونيو 2016 في 02:42

#3

الاخ Mr-B

اشكر لك تعاونك وتجاوبك

لكن هناك مشكلة اريد أن اكتب ال IP في TextBox وعند الضغط على Button تظهر اسم الدولة في Label

شاهد الصورة والمشكلة

 

http://store1.up-00.com/2016-07/1467622359771.jpg

#4
Me.txtIPAddress.Text = Request.UserHostAdd            
Dim service As New net.webservicex.www.GeoIPService
            Dim output As net.webservicex.www.GeoIP = service.GetGeoIP(txtIPAddress.Text.Trim())
            lblCountry.Text = "Country: " + output.CountryName

..........................................

الكود السابق يعيد ال ip

لكن المشكلة لا يعيد اسم الدولة الصحيحة لل ip

مثلا عندما يكون ip الزائر من السعودية يعيد الدولة الولايات المتحدة

هل توجد مشكلة في الكود؟

#5

الكود يعيد أن ال IP تابع للولايات المتحدة

بينما عندما

اجرب ال IP في موقع يقدم خدمة تحديد IP الدولة يظهر اسم دولة اخرى

#6

هذه API لخدمة أخرى ليست نفسها التي أعطيتك إياها (وهي مضمونة حسب تجربتي)، لم يسبق لي التعامل مع الـAPI التي تستخدمها، لكن كون الكود يعمل فلا يبدو لي أن هناك خطأ لديك، قد تكون الـAPI نفسها غير دقيقة.

مواضيع مشابهة