wake-up-neo.com

Wie ermittelt man eine Postleitzahl und einen Ort aus einer IP-Adresse?

Ich suche nach Ratschlägen für Open API- oder 3D-Party-Produkte, die dabei helfen, eine IP-Adresse in eine Postleitzahl und einen Ort umzuwandeln, um geo-spezifische Website-Inhalte zu erstellen.

48
Irena

Was ich benutze, ist ip2nation: http://www.ip2nation.com

Es ist eine vollständig kostenlose MySQL-Datenbank für IP-Adressen zu Ländern. Sie enthalten einige Beispielskripts PHP auf ihrer Site.

Ich verwende es in meinem WordPress-Blog zusammen mit Ozhs kostenlosem IP to Nation WordPress Plugin

Auch wenn Sie nicht mit WordPress arbeiten, laden Sie das Plugin herunter, da Sie einen guten PHP - Code erhalten, mit dem Sie auf die Datenbank zugreifen können. Er hat sogar eine Reihe von kleinen Länderflaggen, die Sie neben oder anstelle des Ländernamens anzeigen können. Dies ist der Fall, bei dem automatisch Markierungen neben den Namen des Kommentars meines Blogs angezeigt werden.

Wirklich, Sie brauchen dafür keine API. Sie benötigen lediglich die Datenbank und die Fähigkeit, den PHP und den SQL-Code für den Zugriff darauf zu schreiben.

Ich würde ip2location nicht für den gelegentlichen Gebrauch empfehlen. Sie verlangen viel für ihre Datenbanken, und ihre Datenbanken sind sehr umfangreich und haben mehr Details, als die meisten Leute benötigen.

Ip2nation geht jedoch nur auf Länderebene. Wenn Sie Städte und Postleitzahlen benötigen (trotz der Tatsache, dass sie, wie andere Antworten/Kommentare angegeben haben, falsch sein können), können Sie zusätzlich zu ip2location GeoBytes ausprobieren. Sie verfügen über Komponenten, die speziell für geo-spezifische Website-Inhalte geeignet sind, wie GeoSelect: http://www.geobytes.com/GeoSelect.htm

Auch Suche nach "ip to zipcode" bei Google

11
lkessler

Beste (was einfach zu integrieren und kostenlos ist), die ich gefunden habe, ist verfügbar hier . Der Dienst ist vollständig kostenlos, erfordert keine lokalen Installationen und zwingt Sie nicht, Banner auf Ihrer Site zu platzieren (im Gegensatz zu IP2Location). Die einzige Einschränkung, das Abfragelimit, ist sehr vernünftig: Sie können alle 2 Sekunden eine Abfrage auslösen. Selbst wenn Sie häufiger Abfragen machen, werden die Ergebnisse etwas langsamer. Genießen!

10
8
BobbyShaftoe

Ich hoffe, dass alle Benutzer, die den Standort von der IP-Adresse abrufen möchten, mit diesem kleinen Code eine geeignete Lösung erhalten.

$ip_addr = $_SERVER['REMOTE_ADDR'];
$geoplugin = unserialize( file_get_contents('http://www.geoplugin.net/php.gp?ip='.$ip_addr) );

if ( is_numeric($geoplugin['geoplugin_latitude']) && is_numeric($geoplugin['geoplugin_longitude']) ) {
    $lat = $geoplugin['geoplugin_latitude'];
    $long = $geoplugin['geoplugin_longitude'];
}
2
Kapil

Geocoder.ca gibt viele Informationen für IP-Adressen (nur Nordamerika) ZB http://geocoder.ca/99.229.2.190?geoit=xml (unterstützt auch Geoit = ​​Json und Jsonp)

<result>
<geodata>
  <latt>43.623262</latt>
  <longt>-79.749543</longt>
  <city>MISSISSAUGA</city>
  <prov>ON</prov>
  <postal>L5N7Z9</postal>
  <stnumber>1837</stnumber>
  <staddress>Samuelson CIR</staddress>
  <TimeZone>America/Toronto</TimeZone>
  <AreaCode>289</AreaCode>
  <confidence>1</confidence>
  <intersection>
    <street1>Samuelson Cir</street1>
    <street2>Stockbridge Crt</street2>
    <lattx>43.622696</lattx>
    <longtx>-79.748706</longtx>
    <city>MISSISSAUGA</city>
    <prov>ON</prov>
    <distance>0.179</distance>
  </intersection>
 </geodata>
 </result>
1
Ervin Ruci

Das Folgende ist eine modifizierte Version eines Ausschnitts, den ich gefunden habe und der http://ipinfodb.com/ip_locator.php verwendet, um seine Informationen abzurufen. Denken Sie daran, Sie können auch einen API-Schlüssel bei ihnen beantragen und die API direkt verwenden, um die Informationen nach Ihren Wünschen zu erhalten. Wie Sie sehen, http://ipinfodb.com/ip_location_api.php , haben sie Beispiele in allem, von PHP über JavaScript bis hin zu ASP.Net. Wie unten erwähnt, ist kein Schlüssel erforderlich, da die öffentliche Seite und Regex durch die Seite gezogen werden, um die angegebenen Informationen zu erhalten. Schlüssel sind kostenlos.

Ausschnitt

function detect_location($ip=NULL, $asArray=FALSE) {
    if (empty($ip)) {
        if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; }
        elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }
        else { $ip = $_SERVER['REMOTE_ADDR']; }
    }
    elseif (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost') {
        $ip = '8.8.8.8';
    }

    $url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
    $i = 0; $content; $curl_info;

    while (empty($content) && $i < 5) {
        $ch = curl_init();
        $curl_opt = array(
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_HEADER => 0,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_URL => $url,
            CURLOPT_TIMEOUT => 1,
            CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_Host'],
        );
        if (isset($_SERVER['HTTP_USER_AGENT'])) $curl_opt[CURLOPT_USERAGENT] = $_SERVER['HTTP_USER_AGENT'];
        curl_setopt_array($ch, $curl_opt);
        $content = curl_exec($ch);
        if (!is_null($curl_info)) $curl_info = curl_getinfo($ch);
        curl_close($ch);
    }

    $araResp = array();
    if (preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs)) $araResp['city'] = trim($regs[1]);
    if (preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs)) $araResp['state'] = trim($regs[1]);
    if (preg_match('{<li>Country : ([^<]*)}i', $content, $regs)) $araResp['country'] = trim($regs[1]);
    if (preg_match('{<li>Zip or postal code : ([^<]*)</li>}i', $content, $regs)) $araResp['Zip'] = trim($regs[1]);
    if (preg_match('{<li>Latitude : ([^<]*)</li>}i', $content, $regs)) $araResp['latitude'] = trim($regs[1]);
    if (preg_match('{<li>Longitude : ([^<]*)</li>}i', $content, $regs)) $araResp['longitude'] = trim($regs[1]);
    if (preg_match('{<li>Timezone : ([^<]*)</li>}i', $content, $regs)) $araResp['timezone'] = trim($regs[1]);
    if (preg_match('{<li>Hostname : ([^<]*)</li>}i', $content, $regs)) $araResp['hostname'] = trim($regs[1]);

    $strResp = ($araResp['city'] != '' && $araResp['state'] != '') ? ($araResp['city'] . ', ' . $araResp['state']) : 'UNKNOWN';

    return $asArray ? $araResp : $strResp;
}

Benutzen

detect_location();
//  returns "CITY, STATE" based on user IP

detect_location('xxx.xxx.xxx.xxx');
//  returns "CITY, STATE" based on IP you provide

detect_location(NULL, TRUE);    //   based on user IP
//  returns array(8) { ["city"] => "CITY", ["state"] => "STATE", ["country"] => "US", ["Zip"] => "xxxxx", ["latitude"] => "xx.xxxxxx", ["longitude"] => "-xx.xxxxxx", ["timezone"] => "-07:00", ["hostname"] => "xx-xx-xx-xx.Host.name.net" }

detect_location('xxx.xxx.xxx.xxx', TRUE);   //   based on IP you provide
//  returns array(8) { ["city"] => "CITY", ["state"] => "STATE", ["country"] => "US", ["Zip"] => "xxxxx", ["latitude"] => "xx.xxxxxx", ["longitude"] => "-xx.xxxxxx", ["timezone"] => "-07:00", ["hostname"] => "xx-xx-xx-xx.Host.name.net" }
0
SpYk3HH

In Ruby ... Dies sind die Schritte

  1. Gem Geocoder gem install geocoder installieren
  2. In einem Ruby-Skript haben Sie diese Zeilen.

    require "geocoder"

    puts Geocoder.address('76.95.251.102'); // Ändern Sie die IP-Adresse entsprechend.

  3. Führen Sie das Skript aus, um die Stadt, den Bundesstaat, die Postleitzahl und das Land zu ermitteln

output: Bellflower, CA 90706, United States

0