Guides

Ajouter une liste déroulante de pays présélectionnée d'après l'IP

Une liste déroulante de pays présélectionnée d'après ce que suggère l'adresse IP du visiteur évite à la plupart des gens de faire défiler une longue liste, à condition de leur permettre de la modifier lorsque la valeur par défaut est erronée.

Obtenir la valeur par défaut

Recherchez l'adresse IP du visiteur sur votre serveur au moment où la page est demandée, et lisez le champ country_code de la réponse pour définir l'option sélectionnée de la liste avant même que la page ne soit envoyée au navigateur.

GET /v1/ip?ip=192.0.2.15
{
  "status": "ok",
  "ip": "192.0.2.15",
  "version": 4,
  "found": true,
  "country": "Spain",
  "country_code": "ES",
  "region": "Madrid",
  "city": "Madrid",
  "postcode": "28001",
  "lat": 40.4168,
  "lon": -3.7038,
  "timezone": "Europe/Madrid",
  "asn": 5678,
  "org": "Example Networks"
}

Le rendu côté serveur

Comme tout se passe côté serveur, avant le rendu de la page, il n'y a pas d'affichage furtif d'une mauvaise valeur par défaut suivi d'une correction dans le navigateur, ce qui arrive avec les approches côté client qui font un appel après le chargement de la page. Placez l'attribut selected sur l'option correspondante directement dans le HTML que vous générez, en faisant correspondre country_code aux codes ISO déjà utilisés par les valeurs de vos options.

Un second exemple : préremplir le champ pays d'une page de paiement

Le même appel fonctionne aussi bien sur une page de paiement que sur un formulaire d'inscription. Recherchez l'IP de l'acheteur une fois au chargement de la page de paiement, faites correspondre country_code à votre liste de pays de livraison et sélectionnez-le par défaut. Comme le pays de livraison influe sur les taxes et les options de livraison affichées plus bas sur la page, le définir correctement avant le rendu évite un réagencement brutal si le visiteur devait le corriger une fois tout le reste chargé autour d'une mauvaise valeur par défaut.

Toujours permettre la modification

Considérez le pays déduit de l'IP comme un point de départ, pas comme une réponse figée. Un visiteur en voyage, connecté via le VPN de son entreprise ou vivant simplement dans un lieu qui ne correspond pas à l'adresse déclarée de son fournisseur d'accès devra choisir une autre option ; rien dans le formulaire ne doit donc supposer que la valeur par défaut est correcte.

Une erreur courante à éviter

Ne mettez pas en cache la page entièrement rendue derrière un CDN ou un proxy inverse sans la faire varier selon le visiteur : une page rendue une fois pour l'IP du premier visiteur puis servie depuis le cache à tous les suivants affichera le pays de ce premier visiteur à tout le monde, où qu'ils se trouvent réellement. Si vos pages sont mises en cache, excluez ce fragment du cache ou rendez-le via un petit include côté serveur exécuté à chaque requête.

Gérer une recherche qui ne trouve rien

Si found revient à false, ce qui arrive pour certaines plages privées ou non attribuées, revenez à une valeur par défaut neutre, comme une sélection vide ou votre pays le plus fréquent, plutôt que de laisser le champ dans un état indéfini.

Les visiteurs en IPv6 fonctionnent de la même façon

Un visiteur connecté en IPv6 reçoit le même champ country_code depuis le même endpoint, simplement résolu sur un réseau /48 plutôt que /24. Rien dans la logique de la liste déroulante ne doit changer selon la version d'IP de la requête. Consultez la documentation de la recherche IPv6 pour les détails propres à chaque version.

Le coût de cette fonctionnalité

Il s'agit d'une requête par nouvelle session de visiteur, mise en cache pour la session afin qu'une même visite ne déclenche pas de recherches répétées sur plusieurs pages de formulaire. La fonctionnalité reste ainsi largement dans les 2 500 requêtes gratuites par jour incluses avec chaque clé, ou disponibles depuis une même adresse sans clé, pour tous les sites sauf les plus fréquentés.

Une valeur par défaut judicieuse évite de faire défiler une liste de cent éléments, et le visiteur garde le contrôle total si elle se trompe. Le détail des champs se trouve dans la documentation de la recherche IPv4.