Bagaimana untuk mendapatkan Negara menurut IP tertentu?

Apakah ada yang tahu cara sederhana untuk mengambil negara untuk Alamat IP tertentu? Sebaiknya di ISO_3166-1 format?

Mengomentari pertanyaan (2)

Ada dua pendekatan: menggunakan layanan Internet dan menggunakan beberapa jenis dari daftar lokal (mungkin dibungkus di perpustakaan). Apa yang anda inginkan akan tergantung pada apa yang anda sedang membangun.

Untuk layanan:

Untuk daftar:

Format didokumentasikan di README ini

Komentar (2)
Larutan

Banyak orang (termasuk perusahaan saya) tampaknya menggunakan MaxMind GeoIP.

Mereka memiliki versi gratis GeoLite yang tidak akurat seperti versi berbayar, tetapi jika anda're hanya setelah sesuatu yang sederhana, mungkin akan cukup baik.

Komentar (3)

Berikut ini's nice layanan gratis dengan API umum: http://www.hostip.info/use.html

Komentar (0)

ipinfodb menyediakan database gratis dan API untuk IP untuk negara dan sebaliknya. Mereka menggunakan data gratis dari MaxMind. Data akan diperbarui setiap bulan, dan itu's gratis alternatif dengan layak akurasi.

Komentar (1)

Saya don't tahu bagaimana akurat yang hostip.info lokasi hotel ini. Aku hanya mengunjungi situs tersebut, dan melaporkan bahwa negara saya adalah Kanada. I'm di AS dan ISP yang kantor saya menggunakan hanya beroperasi dari KAMI. Hal ini memungkinkan anda untuk memperbaiki itu's menebak, tetapi jika anda menggunakan layanan ini untuk melacak situs web vistors oleh negara, anda'll tidak memiliki cara untuk mengetahui apakah data tersebut sudah benar. Tentu saja, aku'm hanya satu titik data. Saya download GeoLite Negara database, yang hanya .file csv, dan alamat IP saya telah diidentifikasi dengan benar sebagai KITA.

Manfaat lain dari MaxMind lini produk (berbayar atau gratis) adalah bahwa anda memiliki data, anda don't dikenakan kinerja memukul membuat web service panggilan ke sistem lain.

Komentar (1)

Anda dapat menggunakan solusi yang disediakan untuk pertanyaan.

Tapi itu kembali 2 digit kode negara.

Komentar (0)

Yang paling akurat adalah Elemen Digital NetAcuity...tidak gratis tetapi anda mendapatkan apa yang anda bayar untuk sebagian besar waktu....Digital Element

Komentar (0)

google's clientlocation kembali (contoh)

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

Coba ini kode 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];?>
Komentar (0)

Anda dapat menggunakan layanan saya, http://ipinfo.io untuk ini. API kembali sejumlah besar rincian yang berbeda tentang sebuah alamat 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
}

Jika anda're hanya setelah kode negara anda hanya perlu menambahkan /negara ke URL:

$ curl ipinfo.io/8.8.8.8/country
US

Berikut ini's generik fungsi PHP yang bisa anda gunakan:

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

I've digunakan IP 8.8.8.8 dalam contoh ini, tetapi jika anda ingin rincian untuk pengguna's IP hanya lulus dalam $_SERVER[&#39;REMOTE_ADDR&#39;] sebagai gantinya. Rincian lebih lanjut tersedia di http://ipinfo.io/developers

Komentar (0)

anda dapat menggunakan layanan web API's yang melakukan pekerjaan ini seperti:

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

menggunakan fungsi ipToCountry($ip) dari http://www.mmtutorialvault.com/php-ip-to-country-function/

Komentar (0)

Anda dapat mencoba gratis [IP2Location LITE database][1]

Untuk membuat tabel di 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;

Untuk mengimpor data

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;

Kode PHP untuk query MySQL


<?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 
Komentar (0)

Lihat ipdata.co yang memberikan anda beberapa poin data dari sebuah alamat ip.

API cukup cepat, dengan 10 global endpoint masing-masing mampu menangani >800M panggilan sehari-hari.

Berikut ini's curl contoh;

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
    }
}⏎  
Komentar (0)