Géolocalisation et affiliation automatique à un contenu

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Je realise un site e-commerce.

J'ai créer un type de contenu "magasin", et chaque magasin va avoir un emplacement avec les modules gmap et localisation.

Je vais également avoir un type de contenu "client". A qui je vais également definir un emplacement (l'adresse du client). (car seuls les personnes identifier pourront passer commande).

Ce que je voudrais, c'est que on affilie automatique un magasin à un client (le magasin le plus proche) grâce aux coordonnée de la geolocalisation.

Comment je peux faire?

cette fonction te permet de calculer la distance enter deux point dont tu a la latitude et la longitude ce qui doit etre ton cas.La premiere te renvoi des mettre et pour avoir en km c est indiqué juste derriere.

Apres tu prend la plus petite pour savoir kel magazin ets le plus proche

<?php
// renvoi la distance en mètres
function get_distance_m($lat1, $lng1, $lat2, $lng2) {
 
$earth_radius = 6378137;   // Terre = sphère de 6378km de rayon
 
$rlo1 = deg2rad($lng1);
 
$rla1 = deg2rad($lat1);
 
$rlo2 = deg2rad($lng2);
 
$rla2 = deg2rad($lat2);
 
$dlo = ($rlo2 - $rlo1) / 2;
 
$dla = ($rla2 - $rla1) / 2;
 
$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo
));
 
$d = 2 * atan2(sqrt($a), sqrt(1 - $a));
  return (
$earth_radius * $d);
}

echo (
round(get_distance_m(48.856667, 2.350987, 45.767299, 4.834329) / 1000, 3))
 .
' km';
// affiche 391.613 km
?>

Bonjour,
je reprends ce post pour aller un peu plus loin.
Je souhaite réaliser la même chose, mais sans user connecté.
J'aurais donc besoin de récupérer la localisation de l'internaute à partir de son adresse IP.
Comment procéder? Est-ce faisable simplement ou pas du tout?
Je n'ai pas trouvé de module ni de post à ce sujet. Si vous en connaissez, merci de me l'indiquer.

oui c est possible
il y a des service qui font ca sans trop se fouler:

tape cette url dans ton adresse navigateur en mettant un ip

http://ipinfodb.com/ip_query2.php?ip=88.162.65.57

ca te genere un xml qui va te donner le pays la ville

tu peut mettre plusieurs ip a la suite en separant par des virgule.

Donc la procedure dans ton cas serai recupere l ip avec $ip=$_SERVER["REMOTE_ADDR"];
puis tu la passe dans cette url et tu recupere grace a file_get_contents(cette adresse avec l ip);

en gros c est :

$ip=$_SERVER["REMOTE_ADDR"];
$xml = file_get_content('http://ipinfodb.com/ip_query2.php?ip='.$ip)

et tu parse tes données puis tu les stock en bdd.

OUI
Techniquement l'IP ne permet pas de localiser (précisemment) une machine.
Je ne connais pas la façon précise dont fonctionne le site que tu évoques, mais il est probable que celui-ci identifie l'un des derniers serveurs entre ton provider et ta machine et pour lequel il connaît la position géographique.
Donc si ton provider a un faible réseau ou ne donne pas l'emplacement exact de ses serveurs, il y a fort à parier que l'information recueillie ne soit pas très précise... (ce qui est mon cas).
Donc au final, l'IP pour déterminer le pays : OK
pour déterminer une région, voire une ville (avec un précision de 100%) : KO

Je viens de tester, pour moi c'est OK, je récupère bien ma ville. Mais je suis en ville, et il se peut que l'adresse soit celle du serveur. La localisation à l'intérieur de la ville n'est pas exacte. Je vais demander à des amis qui habitent à l'extérieur de faire le test.

Effectivement, les tests ne sont pas concluants; j'habite en Bretagne, mes amis mis à contribution aussi, mais pour le moment, sur les réponses que j'ai eues, rien ne colle. En Bretagne, l'écart peut atteindre la centaine de kilomètres. J'ai même le cas d'une localisation à Boulogne-Billancourt; pour ce cas là, il faut que je demande des précisions, mais je pense que le test a été fait sur son lieu de travail et qu'ils utilisent un intranet. J'ai contrôlé tous ces résultats avec le site http://www.localiser-ip.com/, j'obtiens exactement les mêmes résultats. Donc, si le visiteur ne s'est pas identifié lui-même en indiquant son adresse, il me paraît risqué de lui proposer quelque chose en fonction de sa localisation.

Recherche sur les sites des grands magasins (par ex Carrefour, Darty...). Du peu que j'ai regardé ils demandent soit le CP, soit la ville. Est-ce que tu penses que c'est parce qu'ils n'ont pas eu l'idée d'utiliser l'IP pour géolocaliser leur client!?

Comme je te l'ai expliqué l'IP n'est pas techniquement en mesure de fournir ce renseignement précis (sans parler des problèmes de proxy...)

Fais comme tu veux, mais je serais toi, je ne perdrais pas trop de temps sur cette piste...