سؤال

هل من الممكن الحصول على تفاصيل الموقع من عنوان IP للمستخدمين في PHP.

أي اقتراحات ؟؟

شكرا

هل كانت مفيدة؟

المحلول

$ip = '98.229.152.237';
$xml = simplexml_load_file("http://ipinfodb.com/ip_query.php?ip=$ip");
print_r($xml);

انتاج:

SimpleXMLElement Object
(
    [Ip] => 98.229.152.237
    [Status] => OK
    [CountryCode] => US
    [CountryName] => United States
    [RegionCode] => 33
    [RegionName] => New Hampshire
    [City] => Manchester
    [ZipPostalCode] => 03103
    [Latitude] => 42.9403
    [Longitude] => -71.4435
    [Timezone] => -5
    [Gmtoffset] => -5
    [Dstoffset] => -4
)

نصائح أخرى

تحتاج إلى استخدام بعض كين من خدمة جيو الملكية الفكرية

خدمة مجانية واحدة وجدت على Google: geoplugin.وبعد انهم php snipplets لاستخدام خدمتهم: GeOplugin / PHP.

يمكنك إلقاء نظرة على MaxMind قاعدة بيانات, ، و ال تمديد Geoip Pecl..

في حالتي :

  • لقد قمت بتثبيت التمديد مع "pecl install geoip"
  • وأنا قمت بتنزيل قاعدة بيانات Geolitecity. ونسخها إلى /usr/share/GeoIP/GeoIPCity.dat لذلك وجدت من قبل ملحق pecl.

ملاحظة يجب أن يكون هناك أيضا حزمة الكمثرى (PEAR::Net_GeoIP) لمساعدتك، إذا لم تتمكن من تثبيت أي ملحق Pecl.


بمجرد تثبيت كل من هؤلاء، يمكنك استخدام هذا النوع من التعليمات البرمجية:

$ip = '82.229.x.y';     // replace with your IP address
var_dump(geoip_record_by_name($ip));

وستحصل على هذا النوع من الإخراج:

array
  'continent_code' => string 'EU' (length=2)
  'country_code' => string 'FR' (length=2)
  'country_code3' => string 'FRA' (length=3)
  'country_name' => string 'France' (length=6)
  'region' => string 'B9' (length=2)
  'city' => string 'Lyon' (length=4)
  'postal_code' => string '' (length=0)
  'latitude' => float 45.75
  'longitude' => float 4.84999990463
  'dma_code' => int 0
  'area_code' => int 0

والتي، في حالتي، صحيح: أنا بالفعل في مدينة ليون، الاب.

لا يزال السؤال الأولي ذو صلة بالكثير؛ في أواخر عام 2016).

إجابتي بعد سنوات من الخبرة مع تحديد موقع GEO كما يلي ...

التقارير الحقيقية عن تفاصيل الموقع تتجاوز "البلد" غير موثوق بها. يتم جمع كل المعلومات من تسجيل IP # IPP وهي هذه المعلومات ذات الصلة التي يتم تحديثها بانتظام وتم تمريرها بواسطة موردي البيانات الرئيسيين. نظرا لأن IP # S يتم إسقاط أو اشترى الموردون يجب عليهم الحصول على تفاصيل حول تسجيل / تغييرات الشركات المعنية (أي IMPS). يتم الحصول على معظم الأرقام في "كتل" ولكن ليس كلها ذات صلة بالضرورة بنفس الخادم.

* الكثير (إن لم يكن أكثر شيئ؟) من مواقع الويب الخاصة بالسيارة أصغر توريد المعلومات إلى الجمهور استخدام "MaxMind" المجاني DB و (بشكل غير صحيح) ينقل ذلك إلى الجمهور؛ قراءة maxmind تحذيرات. لا تملك مواقع أصغر موارد التحديث المستمر لتسجيلات السلطة.

MaxMind المجاني و "IP2 الموقع" DBS هي مجموعة فرعية أصغر من قواعد بيانات الدفع الخاصة بها؛ انظر تحذيرهم لتفسير ما هو مفقود.

يتم مشاركة العديد من IP # S في كتل على أي عدد من الخوادم وهذا يؤدي إلى غموض المعلومات. عند استخدام اتصال الشبكة اللاسلكية إلى مزود خدمة الإنترنت، على عكس اتصال ADSL / كبل / Blah السلكي الأساسي، يمكن أن تكون Errita مذهلة للغاية بسبب وضع خوادم شبكة ISP بشكل خاص بشكل خاص (التابع)؛ في معظم الحالات غير الثابتة المتغيرة بين الجلسات وربما البعض حتى أثناء كل جلسة.

على سبيل المثال، عند استخدام جهاز كمبيوتر محمول لاسلكي التجوال لاتصال مزود خدمة الإنترنت، غالبا ما اقتبته في حالة أخرى، ويمكن أن يكون ذلك (هنا في الاتحاد الأفريقي) في أي مكان من المئات إلى الآلاف من KMS بعيدا عن موقعي الفعلي.

هل تستطيع ... مع PHP?

باستخدام زوجين كبيرين من DB (أي IEP2OCOTION.COM) يمكن للمرء الوصول إلى البرامج النصية جانب الخادم المتاحة التي يمكن استخدامها للحصول على المعلومات اللازمة. وبدلا من DB مجاني أقل موثوقية منهم، يمكنني استخدام IP2 الموقع DB1 للحصول على الزوار "البلد" فقط يمكنني أن أفعل ما أريده عبر كل من Perl و PHP.

أنا أيضا تحميل تلقائي وإلغاء ضغطه، وفقا لتحذير الاستخدام، DB الثنائي على أساس شهري فقط بعد تحديثه. من الواضح الوصول إلى النظرة من موقعها الخاص تتغلب على مشاكل الاستحواذ والمعالجة عن بعد عند الطلب.

لمتطلباتي، كان IP2 الموقع الكامل DB أرخص بكثير من MaxMind في السنة. * ومع ذلك فإن MaxMind Free DB هو أكثر شمولا من DB IP2 الموقع.

ملاحظة عند محاولة الحصول على خطاب إضافي وتفاصيل الحالة وما إلى ذلك، أقترح بشدة أنه يتم عرضه بطريقة يمكن للزائر إجراء تصحيحات؛ خشية أن يغادروا محبطين.

يعتبر.

 $ip = "66.96.147.144";
    $geoPlugin_array = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $ip) );
    echo '<pre>';
    print_r($geoPlugin_array);

OUTPUT :
Array
(
    [geoplugin_request] => 66.96.147.144
    [geoplugin_status] => 200
    [geoplugin_credit] => Some of the returned data includes GeoLite data created by MaxMind, available from http://www.maxmind.com.
    [geoplugin_city] => Burlington
    [geoplugin_region] => MA
    [geoplugin_areaCode] => 781
    [geoplugin_dmaCode] => 506
    [geoplugin_countryCode] => US
    [geoplugin_countryName] => United States
    [geoplugin_continentCode] => NA
    [geoplugin_latitude] => 42.5051
    [geoplugin_longitude] => -71.204697
    [geoplugin_regionCode] => MA
    [geoplugin_regionName] => Massachusetts
    [geoplugin_currencyCode] => USD
    [geoplugin_currencySymbol] => $
    [geoplugin_currencySymbol_UTF8] => $
    [geoplugin_currencyConverter] => 1
)

وجدت مؤخرا مكتبة PHP الموقع الجغرافي

في ملف PHP واحد تحتاج إلى تضمينه في البرنامج النصي PHP الخاص بك. يبحث تلقائيا تلقائيا قاعدة بيانات محدثة وإرجاع تفاصيل البلد لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top