Πώς να πάρει την χώρα, σύμφωνα με μια συγκεκριμένη IP;

ψήφοι
57

Ξέρει κανείς από ένα απλό τρόπο για να ανακτήσετε τη χώρα για μια δεδομένη διεύθυνση IP; Κατά προτίμηση σε ISO_3166-1 μορφή;

Δημοσιεύθηκε 04/08/2008 στις 06:15
πηγή χρήστη
Σε άλλες γλώσσες...                            


14 απαντήσεις

ψήφοι
38

Υπάρχουν δύο προσεγγίσεις: χρησιμοποιώντας μια υπηρεσία Internet και τη χρήση κάποιου είδους τοπική λίστα (ίσως τυλιγμένο σε μια βιβλιοθήκη). Τι θέλετε θα εξαρτηθεί από το τι χτίζετε.

Για τις υπηρεσίες:

Για λίστες:

Απαντήθηκε 15/09/2008 στις 20:45
πηγή χρήστη

ψήφοι
35

Πολλοί άνθρωποι (συμπεριλαμβανομένης της εταιρείας μου) φαίνεται να χρησιμοποιούν MaxMind GeoIP.

Έχουν μια δωρεάν έκδοση GeoLite που δεν είναι τόσο ακριβής όσο και η πληρωμένη έκδοση, αλλά αν είστε απλά μετά από κάτι απλό, μπορεί να είναι αρκετά καλό.

Απαντήθηκε 04/08/2008 στις 07:26
πηγή χρήστη

ψήφοι
10

Εδώ είναι ένα ωραίο δωρεάν υπηρεσία με ένα δημόσιο API: http://www.hostip.info/use.html

Απαντήθηκε 04/08/2008 στις 06:21
πηγή χρήστη

ψήφοι
8

ipinfodb προσφέρει δωρεάν βάση δεδομένων και API για την IP για τη χώρα και το αντίστροφο. Χρησιμοποιούν δωρεάν στοιχεία από MaxMind. Τα στοιχεία ενημερώνεται κάθε μήνα, και αυτό είναι ένα μεγάλο δωρεάν εναλλακτική λύση με αξιοπρεπή ακρίβεια.

Απαντήθηκε 13/01/2010 στις 14:13
πηγή χρήστη

ψήφοι
5

Δεν ξέρω πόσο ακριβής ότι η περιοχή hostip.info είναι. Απλά πήγαν στον εν λόγω χώρο, και ανέφερε ότι η χώρα μου είναι ο Καναδάς. Είμαι στις ΗΠΑ και ο ISP που χρησιμοποιεί το γραφείο μου λειτουργεί μόνο από τις ΗΠΑ. Κάνει να σας επιτρέψει να διορθώσετε αυτό είναι εικασία, αλλά αν χρησιμοποιείτε αυτή την υπηρεσία για να παρακολουθείτε vistors web site ανά χώρα, δεν θα έχετε τη δυνατότητα να γνωρίζει εάν τα δεδομένα είναι σωστή. Φυσικά, είμαι απλά ένα σημείο δεδομένων. Κατέβασα τη βάση δεδομένων GeoLite Χώρα, η οποία είναι απλά ένα αρχείο .csv, και η διεύθυνση IP μου έχουν αναγνωριστεί σωστά ως ΗΠΑ.

Ένα άλλο πλεονέκτημα της σειράς προϊόντων MaxMind (επί πληρωμή ή δωρεάν) είναι ότι έχετε τα δεδομένα, δεν επιβαρύνονται με το χτύπημα των επιδόσεων των πραγματοποίηση μιας κλήσης διαδικτυακή υπηρεσία σε άλλο σύστημα.

Απαντήθηκε 04/08/2008 στις 15:02
πηγή χρήστη

ψήφοι
2

Μπορείτε να χρησιμοποιήσετε την υπηρεσία μου, 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

Απαντήθηκε 26/08/2014 στις 05:49
πηγή χρήστη

ψήφοι
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];?>
Απαντήθηκε 30/07/2012 στις 09:07
πηγή χρήστη

ψήφοι
2

Μπορείτε να χρησιμοποιήσετε τη λύση που προβλέπεται για αυτό το θέμα .

Αλλά επιστρέφει έναν κωδικό χώρας 2 ψηφίων.

Απαντήθηκε 19/10/2011 στις 15:04
πηγή χρήστη

ψήφοι
2

της Google επιστρέφει clientlocation ( παράδειγμά μου )

latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "IP location: " + getFormattedLocation();
document.getElementById("location").innerHTML = location;
Απαντήθηκε 13/01/2010 στις 14:25
πηγή χρήστη

ψήφοι
2

Η πιο ακριβή είναι Digital Elements NetAcuity ... δεν είναι δωρεάν, αλλά θα πάρετε αυτό που πληρώνετε για το μεγαλύτερο μέρος του χρόνου .... Digital Element

Απαντήθηκε 27/09/2008 στις 04:04
πηγή χρήστη

ψήφοι
1

μπορείτε να χρησιμοποιήσετε το web API για την υπηρεσία που κάνω αυτή τη δουλειά, όπως:

see example of service: http://ip-api.com and usage: http://whatmyip.info
Απαντήθηκε 26/05/2014 στις 15:59
πηγή χρήστη

ψήφοι
1

χρησιμοποιήστε τη λειτουργία ipToCountry ($ ip) από http://www.mmtutorialvault.com/php-ip-to-country-function/

Απαντήθηκε 27/06/2013 στις 18:54
πηγή χρήστη

ψήφοι
0

Μπορείτε να δοκιμάσετε την δωρεάν βάση δεδομένων IP2Location LITE

Για να δημιουργήσετε τον πίνακα σε 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 για να θέσει υπό αμφισβήτηση το 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);
 }
}
?>
Απαντήθηκε 27/02/2018 στις 05:32
πηγή χρήστη

ψήφοι
0

Δείτε 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
    }
}⏎  
Απαντήθηκε 18/02/2018 στις 19:05
πηγή χρήστη

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