Jak se dostat na zemi podle určitého IP?

hlasů
57

Ví někdo o jednoduchý způsob, jak načíst do země pro danou IP adresu? Nejlépe ve formátu ISO_3166-1?

Položena 04/08/2008 v 06:15
zdroj uživatelem
V jiných jazycích...                            


14 odpovědí

hlasů
38

Existují dva přístupy: pomocí internetové služby a použitím nějakého místního seznamu (možná zabalené v knihovně). Co chcete, bude záviset na tom, co se staví.

Pro zakázky na služby:

Pro seznamy:

Odpovězeno 15/09/2008 v 20:45
zdroj uživatelem

hlasů
35

Mnoho lidí (včetně mé společnosti), zdá se, že použití MaxMind GeoIP.

Mají volnou verzi GeoLite což není tak přesná jako placené verze, ale pokud jste jen po něco jednoduchého, může být dost dobrý.

Odpovězeno 04/08/2008 v 07:26
zdroj uživatelem

hlasů
10

Tady je pěkný bezplatná služba s veřejnou API: http://www.hostip.info/use.html

Odpovězeno 04/08/2008 v 06:21
zdroj uživatelem

hlasů
8

ipinfodb poskytuje zdarma databáze a API pro IP do země a naopak. Používají volných dat z MaxMind. Data se aktualizuje každý měsíc, a to je velký volný alternativa se slušnou přesností.

Odpovězeno 13/01/2010 v 14:13
zdroj uživatelem

hlasů
5

Nevím, jak přesně, že hostip.info web. Jen jsem visted tento web, a hlásil, že moje země je Canada. Jsem v USA a ISP, který má kancelář využívá pracuje pouze ze Spojených států. Dělá vám umožní opravit je to odhad, ale pokud používáte tuto službu pro sledování webových stránek vistors podle jednotlivých zemí, budete mít žádný způsob, jak poznat, zda jsou údaje správné. Samozřejmě, že jsem jen jeden datový bod. Stáhnul jsem si databázi GeoLite Země, což je jen soubor ve formátu CSV, a moje IP adresa byla správně označené jako USA.

Další výhodou produktové řady MaxMind (placené nebo zdarma), je, že máte data, nemusíte vynakládat hit výkon tvorby servisní volání webové do jiného systému.

Odpovězeno 04/08/2008 v 15:02
zdroj uživatelem

hlasů
2

Můžete použít svou službu, http://ipinfo.io , za to. API vrací spoustu různých Podrobné informace o IP adrese:

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

Pokud jste až po kód země stačí přidat / zemi na adrese:

$ curl ipinfo.io/8.8.8.8/country
US

Zde je generický PHP funkce můžete použít:

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

Použil jsem IP 8.8.8.8 v těchto příkladech, ale pokud chcete podrobnosti o IP uživatele jen předat $_SERVER['REMOTE_ADDR']místo. Další podrobnosti jsou k dispozici na http://ipinfo.io/developers

Odpovězeno 26/08/2014 v 05:49
zdroj uživatelem

hlasů
2

Zkuste tento 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];?>
Odpovězeno 30/07/2012 v 09:07
zdroj uživatelem

hlasů
2

Můžete použít řešení stanovené touto otázkou .

Ale vrací kód 2místné zemi.

Odpovězeno 19/10/2011 v 15:04
zdroj uživatelem

hlasů
2

Google je clientlocation vrátí ( můj příklad )

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
Odpovězeno 13/01/2010 v 14:25
zdroj uživatelem

hlasů
2

Nejpřesnější je Digital Elements NetAcuity ... ne zadarmo, ale dostanete, co budete platit za většinu času .... Digitální Element

Odpovězeno 27/09/2008 v 04:04
zdroj uživatelem

hlasů
1

můžete použít webové služby API, které tuto práci jako:

see example of service: http://ip-api.com and usage: http://whatmyip.info
Odpovězeno 26/05/2014 v 15:59
zdroj uživatelem

hlasů
1

použijte funkci ipToCountry ($ IP) z http://www.mmtutorialvault.com/php-ip-to-country-function/

Odpovězeno 27/06/2013 v 18:54
zdroj uživatelem

hlasů
0

Můžete zkusit volný IP2Location LITE databáze

Chcete-li vytvořit tabulku v 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;

Chcete-li importovat 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;

PHP kód na dotaz 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);
 }
}
?>
Odpovězeno 27/02/2018 v 05:32
zdroj uživatelem

hlasů
0

Viz ipdata.co která vám dává několik datových bodů z IP adresy.

API je velmi rychlý, s 10 globálních koncových bodů každý schopen zvládnout> 800M volání denně.

Zde je příklad curl;

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
    }
}⏎  
Odpovězeno 18/02/2018 v 19:05
zdroj uživatelem

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