Hogyan juthat el a Country szerint egy bizonyos IP?

szavazat
57

Tudja valaki, hogy egy egyszerű módja annak, hogy letölteni az ország egy adott IP-cím? Lehetőleg ISO_3166-1 formátum?

A kérdést 04/08/2008 06:15
a forrás felhasználó
Más nyelveken...                            


14 válasz

szavazat
38

Két módja van: egy internetes szolgáltatás használatával, és a valamilyen helyi listát (talán csomagolva egy könyvtárban). Mi azt szeretnénk, attól függ, hogy mit építünk.

Szolgáltatás esetében:

Mert meg:

Válaszolt 15/09/2008 20:45
a forrás felhasználó

szavazat
35

Sokan (köztük a cégem) úgy tűnik, hogy használni MaxMind GeoIP.

Van egy ingyenes verzió GeoLite ami nem olyan pontos, mint a fizetett változat, de ha csak valami után egyszerű, lehet, hogy elég jó.

Válaszolt 04/08/2008 07:26
a forrás felhasználó

szavazat
10

Itt egy szép ingyenes szolgáltatás a nyilvános API: http://www.hostip.info/use.html

Válaszolt 04/08/2008 06:21
a forrás felhasználó

szavazat
8

ipinfodb egy ingyenes adatbázis és API IP országra, és fordítva. Ezek használata ingyenes adatok MaxMind. Az adatok frissül, minden hónapban, és ez egy nagyszerű ingyenes alternatíva a tisztességes pontossággal.

Válaszolt 13/01/2010 14:13
a forrás felhasználó

szavazat
5

Nem tudom, hogy pontosan hogy hostip.info webhely. Csak visted hogy a helyszínen, és ez azt jelentette, hogy az én hazám Kanadában. Én az USA-ban és az ISP, hogy az irodám használja csak működik az Egyesült Államokban. Ez lehetővé teszi, hogy helyes ez találgatás, de ha használja ezt a szolgáltatást, hogy nyomon weboldal látogatóknak ország, akkor nem lehet tudni, ha az adatok helyességét. Persze, én csak egy adatpont. Letöltöttem a GeoLite Country adatbázis, amely csak egy .csv fájlt, és az IP-cím helyesen Egyesült Államokban.

További előnye a MaxMind termékcsalád (ingyenes vagy fizetős), hogy van az adatok, akkor nem merülnek fel a teljesítmény hit, hogy egy webes szolgáltatás hívást egy másik rendszerbe.

Válaszolt 04/08/2008 15:02
a forrás felhasználó

szavazat
2

Használhatja az én szolgálatom http://ipinfo.io , erre. Az API visszatér egy csomó különböző részleteket az IP-cím:

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

Ha csak az országkód, csak meg kell hozzáadni / országot a URL:

$ curl ipinfo.io/8.8.8.8/country
US

Itt egy általános PHP függvény használhatja:

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

Már használt az IP 8.8.8.8 ezekben a példákban, de ha szeretné adatait a felhasználó IP csak át a $_SERVER['REMOTE_ADDR']helyett. További részletek a http://ipinfo.io/developers

Válaszolt 26/08/2014 05:49
a forrás felhasználó

szavazat
2

Próbáld ki ezt a php kód

  <?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];?>
Válaszolt 30/07/2012 09:07
a forrás felhasználó

szavazat
2

Használhatja a megoldást biztosított erre a kérdésre .

De vissza a 2 számjegyű országkód.

Válaszolt 19/10/2011 15:04
a forrás felhasználó

szavazat
2

A Google clientlocation visszatér ( példámat )

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
Válaszolt 13/01/2010 14:25
a forrás felhasználó

szavazat
2

A legpontosabb a Digital Elements NetAcuity ... nem szabad, de azt kapja, amit fizetni a legtöbb időt .... Digitális Elem

Válaszolt 27/09/2008 04:04
a forrás felhasználó

szavazat
1

használhatja webszolgáltatás API, amely ezt a munkát, mint például:

see example of service: http://ip-api.com and usage: http://whatmyip.info
Válaszolt 26/05/2014 15:59
a forrás felhasználó

szavazat
1

A funkció használatához ipToCountry ($ ip) származó http://www.mmtutorialvault.com/php-ip-to-country-function/

Válaszolt 27/06/2013 18:54
a forrás felhasználó

szavazat
0

Meg lehet próbálni a szabad IP2Location LITE adatbázisban

A tábla létrehozásához a 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;

Az adatok importálásához

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 kód lekérdezésére 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 <= 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);
 }
}
?>
Válaszolt 27/02/2018 05:32
a forrás felhasználó

szavazat
0

Lásd ipdata.co amely megadja több adatpont egy IP-címről.

Az API elég gyors, 10 globális végpontok mindegyike képes kezelni> 800M felhívja naponta.

Itt egy fürt példa;

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
    }
}⏎  
Válaszolt 18/02/2018 19:05
a forrás felhasználó

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