web-dev-qa-db-fra.com

Est-il possible d'avoir une page de destination basée sur l'emplacement des visiteurs?

Je conçois un site pour les événements et j'aimerais que les gens voient une page d'accueil basée sur les événements qui se déroulent dans leur région.

Cela pourrait-il également être fait avec un identifiant, s'ils enregistrent leur adresse?

1
Rob90
  • La méthode moderne consisterait à utiliser html5, qui prend en charge la géolocalisation: démonstration simple
  • Explication un peu plus longue sur la manière dont cela pourrait être ajouté à une application Web ici
  • Un script php de Nice qui utilise un service Web appelé geoplugin (l'API est Nice, aucune idée de la société, ymmv!)
  • Et enfin, en utilisant la géolocalisation html5 à partir de php (dont vous auriez besoin pour wordpress) à stackoverflow

Ce dernier a une bonne explication sur la façon d'utiliser modernizer qui pourrait ensuite combiner html5/geolocation avec un service web ou quelque chose du genre.

4

Il est possible d'obtenir des informations de localisation très floues pour la plupart des gens, la plupart du temps en utilisant l'adresse IP et un service geoIP. Je dis "flou" parce que vous obtenez souvent l'emplacement des serveurs du fournisseur de services Internet, et non l'emplacement spécifique de l'adresse IP particulière. Par exemple, à la maison, mon adresse IP est listée comme se trouvant à environ 30 à 40 km de mon lieu de résidence actuel. En outre, certaines personnes peuvent se rendre via un serveur proxy situé à des centaines ou des milliers de kilomètres de leur lieu de résidence actuel. Si ce sont des paramètres acceptables, alors quelque chose comme ...

$IP = $_SERVER['REMOTE_ADDRESS'];
// get location data
// I am using freegeoip.net for this
// I can't vouch for the service. It is just an example,
// but I queried my IP and it worked well.
$location = wp_remote_get("http://freegeoip.net/json/{$IP}");
// var_dump($location);
// location information is in $location['body']
// check status
if ('200' == $location['response']['code']) {
  $geoloc = json_decode($location['body']); 
  var_dump($geoloc);
  // and you get this
  // stdClass Object
  // (
  //   [city] => xxx
  //   [region_code] => xx
  //   [region_name] => xx
  //   [metrocode] => xxx
  //   [zipcode] => xxxxx
  //   [longitude] => xxxxxx
  //   [latitude] => xxxxxx
  //   [country_code] => xx
  //   [ip] => xxx.xxx.xxx.xxx
  //   [country_name] => xxxxx
  // )
  // you know have what you need to switch your homepage content
}

freegeoip.net limite les demandes à 1 000 par heure. Veillez donc à n'exécuter le code que lorsque cela est nécessaire - définissez un cookie, quelque chose. Je recommanderais de mettre en cache les données afin de réduire le nombre de demandes et de réduire le temps système/délai nécessaire pour contacter un service tiers.

1
s_ha_dum