2016-03-29 23 views
0

Ich suche nach einer Möglichkeit, die nächste Stadt und den Kreis der Person zu finden, die meine Website durchsucht. Dann würde Ich mag es so etwas wie zu sein:Suche nach der nächsten Stadt

$town = "London, England"; 

Oder so etwas wie:

$town = "Bacup, Lancashire GB"; 

Google, so etwas zu tun, hat es geschafft. Wenn Sie etwas suchen, steht unten auf der Seite "Ihr Dorf - von Ihrer Internetadresse".

Dank

+0

Warum? Was ist dein Grund? – GeorgeWL

+0

Was am wahrscheinlichsten ist, ist etwas namens "[geolocation] (https://en.wikipedia.org/wiki/Geolocation)" Gogle hat eine API, die es für Sie tun wird. Es gibt Schnipsel und Bibliotheken bereit gemacht für PHP, HTML und jquery, wenn das ist, was du meinst http://stackoverflow.com/questions/4724971/is-there-a-good-php-geolocation-service relevant sein http://www.w3schools.com/html/html5_geolocation.asp http://html5demos.com/geo https://developers.google.com/maps/documentation/javascript/examples/map-geolocation Vorsicht: moderne Browser werden nach Benutzererlaubnis fragen, bevor sie versuchen, Geolocation zu bekommen. – GeorgeWL

+0

Ja, das wird gut, wenn es eine Erlaubnis braucht. Wenn der Benutzer auf einem mobilen/Tablet-Gerät mit GPS surft, verwendet er das automatisch? @TheGeorgeL – CoolCodeGuy

Antwort

1

Da Sie die Position der Person sehen Ihre Website wissen wollen, werden die Daten von der Client-Maschine genommen werden. Verwenden Sie

navigator.geolocation.getCurrentPosition(showPosition); 

um den Standort des Kunden zu erhalten. Die showPosition ist ein Funktionsname, der übergeben werden soll, also definieren Sie eine Funktion mit diesem Namen. Wenn Sie nur den Standort nur auf Client-Rechner angezeigt werden soll, gehen Sie wie folgt vor:

function showPosition(position) { 
    var x = document.getElementById("demo"); 
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude; 
} 

Oder Sie können auch Daten an den Server senden.

Sie können https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition

Jetzt ein wenig mehr Informationen darüber erhalten Sie die Koordinaten (herauszufinden, wie genau?), Google map location services api nutzen den Standortnamen zu erhalten. Die Google Maps Geolocation API - https://developers.google.com/maps/documentation/geolocation/intro

+1

Natürlich wird der Benutzer aufgefordert zu wählen, ob (n) er oder nicht zulassen möchte ... –

+0

und beachten Sie, dies ist eine von vielen vielen Lösungen. – GeorgeWL

+0

Für Chrome 5.0+, IE 9.0+, Firefox 3.5+, Safari 5.0+ und Opera 16.0+ also stellen Sie sicher, dass Sie in Validierung, etwas wie: 'if (navigator.geolocation) { navigator.geolocation.getCurrentPosition (Erfolg); } else { Fehler ('Geo Location wird nicht unterstützt'); } ' – GeorgeWL

1

Erhalten Geo-IP Information

Anfragen ein Geo-IP-Server (netip.de) zu überprüfen, gibt, wo eine IP befindet (Host, Staat, Land, Stadt).

<?php 
    $ip='94.219.40.96'; 
    print_r(geoCheckIP($ip)); 
    //Array ([domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen) 

    //Get an array with geoip-infodata 
    function geoCheckIP($ip) 
    { 
      //check, if the provided ip is valid 
      if(!filter_var($ip, FILTER_VALIDATE_IP)) 
      { 
        throw new InvalidArgumentException("IP is not valid"); 
      } 

      //contact ip-server 
      [email protected]_get_contents('http://www.netip.de/search?query='.$ip); 
      if (empty($response)) 
      { 
        throw new InvalidArgumentException("Error contacting Geo-IP-Server"); 
      } 

      //Array containing all regex-patterns necessary to extract ip-geoinfo from page 
      $patterns=array(); 
      $patterns["domain"] = '#Domain: (.*?)&nbsp;#i'; 
      $patterns["country"] = '#Country: (.*?)&nbsp;#i'; 
      $patterns["state"] = '#State/Region: (.*?)<br#i'; 
      $patterns["town"] = '#City: (.*?)<br#i'; 

      //Array where results will be stored 
      $ipInfo=array(); 

      //check response from ipserver for above patterns 
      foreach ($patterns as $key => $pattern) 
      { 
        //store the result in array 
        $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found'; 
      } 

      return $ipInfo; 
    } 

?> 
+0

In html5 Browser ist dies veraltet, kann nur mit dem http://www.w3schools.com/html/html5_geolocation.asp Element durchgeführt werden. – GeorgeWL

+0

Ich würde sagen, dass es eine gute Idee ist, den Benutzer trotzdem zu fragen, damit sie nicht wütend werden können, wenn es ohne Erlaubnis gemacht wird. – GeorgeWL

+1

wie pro Anforderung. Gut ein @TheGeorgeL –

Verwandte Themen