كيفية الحصول على البلاد وفقا معين الملكية الفكرية ؟

StackOverflow https://stackoverflow.com/questions/1033

  •  08-06-2019
  •  | 
  •  

سؤال

لا أحد يعرف من طريقة بسيطة لاسترداد البلاد من أجل إعطاء عنوان IP ؟ ويفضل أن يكون ذلك في ISO_3166-1 الشكل ؟

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

المحلول

الكثير من الناس (بما في ذلك شركة بي) يبدو أن استخدام MaxMind في خدمة الإنترنت.

لديهم نسخة مجانية GeoLite وهي ليست دقيقة مثل النسخة المدفوعة, ولكن إذا كنت فقط بعد شيء بسيط ، قد تكون جيدة بما فيه الكفاية.

نصائح أخرى

هناك طريقتان:باستخدام خدمة الإنترنت باستخدام نوع من القائمة المحلية (ربما ملفوفة في المكتبة).ما تريد سوف يعتمد على ما كنت بناء.

الخدمات:

عن القوائم:

وهنا لطيفة خدمة مجانية مع API العامة:http://www.hostip.info/use.html

ipinfodb يوفر قاعدة بيانات مجانية و API الفكرية في البلد والعكس بالعكس.أنها تستخدم بيانات مجانية من MaxMind.البيانات يتم تحديثها كل شهر و هو كبير بديل مجاني ذو دقة.

أنا لا أعرف مدى دقة هذا hostip.info الموقع هو.أنا فقط visted هذا الموقع, و أن ذكرت أن بلدي كندا.أنا في الولايات المتحدة ISP أن مكتبي يستخدم فقط تعمل من الولايات المتحدة.أنها تسمح لك أن الصحيح هو تخمين ، ولكن إذا كنت تستخدم هذه الخدمة لتتبع الموقع الزائرين من البلاد ، سيكون لديك أي وسيلة لمعرفة ما إذا كانت البيانات صحيحة.بالطبع, أنا فقط نقطة بيانات واحدة.أنا تحميل GeoLite البلد قاعدة البيانات فقط .ملف csv و عنوان IP تم تحديدها بشكل صحيح في الولايات المتحدة.

فائدة أخرى من MaxMind في خط الانتاج (بأجر أو مجانا) هو أن لديك البيانات لا تحمل الأداء ضرب من صنع استدعاء خدمة ويب إلى نظام آخر.

الأكثر دقة هو عناصر رقمية NetAcuity...ليس مجانا ولكن تحصل على ما تدفعه مقابل معظم الوقت....الرقمية عنصر

جوجل clientlocation يعود (بلدي على سبيل المثال)

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;

يمكنك استخدام الحل المنصوص عليه هذا السؤال.

لكنه يعود 2 أرقام رمز البلد.

جرب هذا رمز php

  <?php  $ip = $_SERVER['REMOTE_ADDR'];
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
    $json = json_decode($json,true);
    $timezone = $json[localTimeZone];?>

يمكنك استخدام الخدمة ، http://ipinfo.io, هذا.إرجاع API مجموعة مختلفة من التفاصيل حول عنوان IP:

$ 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": "Mountain View",
  "region": "CA",
  "country": "US",
  "phone": 650
}

إذا كنت إلا بعد رمز البلد تحتاج فقط إلى إضافة /البلد إلى عنوان URL:

$ curl ipinfo.io/8.8.8.8/country
US

وهنا عامة وظيفة PHP يمكن استخدام:

function ip_details($ip) {
    $json = file_get_contents("http://ipinfo.io/{$ip}");
    $details = json_decode($json);
    return $details;
}

$details = ip_details("8.8.8.8");

echo $details->city;     // => Mountain View
echo $details->country;  // => US
echo $details->org;      // => AS15169 Google Inc.
echo $details->hostname; // => google-public-dns-a.google.com

لقد استعملت IP 8.8.8.8 في هذه الأمثلة ، ولكن إذا كنت تريد تفاصيل المستخدم IP فقط تمر في $_SERVER['REMOTE_ADDR'] بدلا من ذلك.المزيد من التفاصيل متوفرة في http://ipinfo.io/developers

استخدام وظيفة ipToCountry($ip) من http://www.mmtutorialvault.com/php-ip-to-country-function/

يمكنك استخدام خدمة ويب API التي تقوم بهذا العمل مثل:

see example of service: http://ip-api.com and usage: http://whatmyip.info

انظر ipdata.co مما يتيح لك العديد من نقاط البيانات من عنوان ip.

API هو سريع جدا, مع 10 عالمي النهاية كل قادرة على التعامل مع >800M المكالمات اليومية.

وهنا حليقة سبيل المثال ؛

curl https://api.ipdata.co/78.8.53.5
{
    "ip": "78.8.53.5",
    "city": "G\u0142og\u00f3w",
    "region": "Lower Silesia",
    "region_code": "DS",
    "country_name": "Poland",
    "country_code": "PL",
    "continent_name": "Europe",
    "continent_code": "EU",
    "latitude": 51.6461,
    "longitude": 16.1678,
    "asn": "AS12741",
    "organisation": "Netia SA",
    "postal": "67-200",
    "currency": "PLN",
    "currency_symbol": "z\u0142",
    "calling_code": "48",
    "flag": "https://ipdata.co/flags/pl.png",
    "emoji_flag": "\ud83c\uddf5\ud83c\uddf1",
    "time_zone": "Europe/Warsaw",
    "is_eu": true,
    "suspicious_factors": {
        "is_tor": false
    }
}⏎  

يمكنك محاولة مجانا IP2Location لايت قاعدة البيانات

لإنشاء جدول في MySQL

CREATE DATABASE ip2location;
USE ip2location;
CREATE TABLE `ip2location_db1`(
    `ip_from` INT(10) UNSIGNED,
    `ip_to` INT(10) UNSIGNED,
    `country_code` CHAR(2),
    `country_name` VARCHAR(64),
    INDEX `idx_ip_to` (`ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

استيراد البيانات

LOAD DATA LOCAL
    INFILE 'IP2LOCATION-LITE-DB1.CSV'
INTO TABLE
    `ip2location_db1`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;

كود PHP الاستعلام عن الخلية

<?php
// Replace this MYSQL server variables with actual configuration
$mysql_server = "mysql_server.com";
$mysql_user_name = "UserName";
$mysql_user_pass = "Password";

// Retrieve visitor IP address from server variable REMOTE_ADDR
$ipaddress = $_SERVER["REMOTE_ADDR"];

// Convert IP address to IP number for querying database
$ipno = Dot2LongIP($ipaddress);

// Connect to the database server
$link = mysql_connect($mysql_server, $mysql_user_name, $mysql_user_pass) or die("Could not connect to MySQL database");

// Connect to the IP2Location database
mysql_select_db("ip2location") or die("Could not select database");

// SQL query string to match the recordset that the IP number fall between the valid range
$query = "SELECT * FROM ip2location_db1 WHERE $ipno <= ip_to LIMIT 1";

// Execute SQL query
$result = mysql_query($query) or die("IP2Location Query Failed");

// Retrieve the recordset (only one)
$row = mysql_fetch_object($result);

// Keep the country information into two different variables
$country_code = $row->country_code;
$country_name = $row->country_name;

echo "Country_code: " . $country_code . "<br/>";
echo "Country_name: " . $country_name . "<br />";

// Free recordset and close database connection
mysql_free_result($result);
mysql_close($link);

// Function to convert IP address (xxx.xxx.xxx.xxx) to IP number (0 to 256^4-1)
function Dot2LongIP ($IPaddr) {
 if ($IPaddr == "")
 {
   return 0;
 } else {
   $ips = explode(".", $IPaddr);
   return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256);
 }
}
?>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top