Nasıl belli IP'ye göre Ülke alınır?

oy
57

Herkes belirli bir IP Adresi ülkeyi almak için basit bir yol biliyor mu? Tercihen ISO_3166-1 biçiminde?

Oluştur 04/08/2008 saat 06:15
kaynak kullanıcı
Diğer dillerde...                            


14 cevaplar

oy
38

Bir İnternet servisini kullanarak ve (belki bir kütüphane sarılmış) yerel listenin çeşit kullanarak: İki yaklaşım vardır. Eğer inşa ediyoruz ne bağlıdır istediğini.

hizmetleri için:

listeleri için:

Cevap 15/09/2008 saat 20:45
kaynak kullanıcı

oy
35

(Şirketim dahil) Birçok insan MaxMind GeoIP kullanmak gibi görünüyor.

Onlar ücretsiz sürümü var geolite ücretli sürümünün doğru değil, ama sadece basit bir şey sonra iseniz, yeterince iyi olabilir.

Cevap 04/08/2008 saat 07:26
kaynak kullanıcı

oy
10

İşte genel API güzel ücretsiz servis var: http://www.hostip.info/use.html

Cevap 04/08/2008 saat 06:21
kaynak kullanıcı

oy
8

ipinfodb ülke ve tersi IP için ücretsiz bir veritabanı ve API sağlar. Onlar MaxMind ücretsiz verileri kullanır. Veri her ay güncellenir ve iyi bir doğrulukla büyük ücretsiz bir alternatiftir.

Cevap 13/01/2010 saat 14:13
kaynak kullanıcı

oy
5

Ben hostip.info sitesi ne kadar doğru olduğunu bilmiyorum. Sadece bu siteyi visted ve bu benim ülkem Kanada olduğunu bildirdi. ABD'de olduğum ve benim ofis kullanan ISS sadece ABD'den çalışır. Size bu tahminim düzeltmek için izin vermez, ancak ülkeye göre web sitesi vistors izlemek için bu hizmeti kullanıyorsanız, verilerin doğru olup olmadığını bilmenin bir yolu olacak. Tabii ki, ben sadece bir veri noktası benim. Sadece bir .csv dosyası, ve benim IP adresi doğru ABD olarak tespit edildiği, GeoLite Ülke veritabanı indirilen.

MaxMind ürün hattı (ücretli veya ücretsiz) bir diğer yararı verileri olduğunu, başka bir sisteme bir web hizmeti çağrısı yapma başarımdan tabi kalmamasıdır.

Cevap 04/08/2008 saat 15:02
kaynak kullanıcı

oy
2

Sen benim servisini kullanabilirsiniz http://ipinfo.io bunun için. API, bir IP adresi hakkında farklı ayrıntılar bir sürü verir:

$ 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
}

Eğer ülke kodundan sonra sadece iseniz sadece URL'ye / ülke eklemeniz gerekir:

$ curl ipinfo.io/8.8.8.8/country
US

Burada kullanabilirsiniz jenerik PHP fonksiyonu var:

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

Ben bu örneklerde IP 8.8.8.8 kullanılır, ancak kullanıcının IP için ayrıntıları istiyorsanız sadece geçmek ettik $_SERVER['REMOTE_ADDR']yerine. Daha fazla detay mevcuttur http://ipinfo.io/developers

Cevap 26/08/2014 saat 05:49
kaynak kullanıcı

oy
2

Bu php kodu deneyin

  <?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];?>
Cevap 30/07/2012 saat 09:07
kaynak kullanıcı

oy
2

Sen öngörülen çözümü kullanabilirsiniz bu soruya .

Ama 2 haneli ülke kodu döndürür.

Cevap 19/10/2011 saat 15:04
kaynak kullanıcı

oy
2

google'ın clientlocation döndürür ( benim örnek )

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
Cevap 13/01/2010 saat 14:25
kaynak kullanıcı

oy
2

En doğru ... özgür değil Dijital Elemanları NetAcuity ama çoğu zaman ne için ödeme olsun .... Dijital Eleman

Cevap 27/09/2008 saat 04:04
kaynak kullanıcı

oy
1

Eğer web hizmeti API bu işi sevmiyorum hangi kullanabilirsiniz:

see example of service: http://ip-api.com and usage: http://whatmyip.info
Cevap 26/05/2014 saat 15:59
kaynak kullanıcı

oy
1

dan işlev IPtoCountry ($ ip) kullanan http://www.mmtutorialvault.com/php-ip-to-country-function/

Cevap 27/06/2013 saat 18:54
kaynak kullanıcı

oy
0

Sen ücretsiz deneyebilirsiniz IP2Location LITE veri tabanını

MySQL tablo oluşturmak için

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;

veri aktarmak için

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 kodu MySQL sorgu

<?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);
 }
}
?>
Cevap 27/02/2018 saat 05:32
kaynak kullanıcı

oy
0

Bkz ipdata.co bir ip adresinden size çeşitli veri noktalarını veren.

API işlemek için 10 küresel bitiş noktaları her mümkün olan> 800M günlük aramaları oldukça hızlı.

İşte bukle örnek;

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
    }
}⏎  
Cevap 18/02/2018 saat 19:05
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more