Anleitungen

Ein Länder-Dropdown mit Vorauswahl per IP hinzufügen

Ein Länder-Dropdown, das standardmäßig das Land vorauswählt, auf das die IP-Adresse eines Besuchers hindeutet, erspart den meisten Menschen das Scrollen durch eine lange Liste, solange es ihnen weiterhin erlaubt, die Auswahl zu ändern, wenn die Vorgabe falsch ist.

Den Standardwert ermitteln

Fragen Sie die IP-Adresse des Besuchers auf Ihrem Server ab, wenn die Seite angefordert wird, und lesen Sie das Feld country_code aus der Antwort, um es als ausgewählte Option des Dropdowns zu setzen, bevor die Seite überhaupt an den Browser gesendet wird.

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"
}

Serverseitig rendern

Da dies vollständig serverseitig vor dem Rendern der Seite geschieht, gibt es kein kurzes Aufblitzen einer falschen Vorgabe mit anschließender Korrektur im Browser, wie es bei clientseitigen Ansätzen passiert, die erst nach dem Laden der Seite eine Abfrage starten. Setzen Sie das Attribut selected direkt im erzeugten HTML auf die passende Option, indem Sie country_code mit den ISO-Codes abgleichen, die Ihre Optionswerte bereits verwenden.

Ein zweites Beispiel: das Länderfeld im Checkout vorausfüllen

Derselbe Aufruf funktioniert auf einer Checkout-Seite genauso gut wie in einem Registrierungsformular. Fragen Sie die IP des Käufers einmal beim Laden der Checkout-Seite ab, gleichen Sie country_code mit Ihrer Liste der Lieferländer ab und wählen Sie es standardmäßig aus. Da das Lieferland die weiter unten angezeigten Steuer- und Versandoptionen beeinflusst, vermeiden Sie durch die richtige Vorauswahl vor dem Rendern ein störendes Neuaufbauen der Seite, das entstünde, wenn der Besucher die Auswahl korrigieren müsste, nachdem alles andere bereits um eine falsche Vorgabe herum geladen wurde.

Änderungen immer zulassen

Behandeln Sie das IP-basierte Land als Ausgangspunkt, nicht als feste Antwort. Ein Besucher, der auf Reisen ist, ein Firmen-VPN nutzt oder einfach irgendwo wohnt, wo die registrierte Adresse seines Netzanbieters nicht passt, muss eine andere Option wählen können, daher sollte nichts im Formular davon ausgehen, dass die Vorgabe richtig ist.

Ein häufiger Fehler, den Sie vermeiden sollten

Cachen Sie die vollständig gerenderte Seite nicht hinter einem CDN oder Reverse Proxy, ohne sie nach Besucher zu variieren, denn eine Seite, die einmal für die IP des ersten Besuchers gerendert und danach allen aus dem Cache ausgeliefert wird, zeigt jedem folgenden Besucher das Land des ersten Besuchers, egal wo er sich tatsächlich befindet. Wenn Ihre Seiten überhaupt gecacht werden, schließen Sie dieses Fragment entweder vom Cache aus oder rendern Sie es über ein kleines serverseitiges Include, das bei jeder Anfrage ausgeführt wird.

Umgang mit einer Abfrage ohne Ergebnis

Wenn found den Wert false zurückgibt, was bei manchen privaten oder nicht vergebenen Bereichen vorkommt, greifen Sie auf eine neutrale Vorgabe zurück, etwa eine leere Auswahl oder Ihr häufigstes Land, statt das Feld in einem undefinierten Zustand zu lassen.

IPv6-Besucher funktionieren genauso

Ein Besucher, der sich über IPv6 verbindet, erhält vom selben Endpunkt dasselbe Feld country_code zurück, nur aufgelöst gegen ein /48-Netzwerk statt ein /24. An der Dropdown-Logik muss sich je nach IP-Version der Anfrage nichts ändern. Die versionsspezifischen Details finden Sie in der Dokumentation zur IPv6-Abfrage.

Kosten dieser Funktion

Das ist eine Anfrage pro neuer Besuchersitzung, für die Dauer der Sitzung gecacht, damit ein einzelner Besuch keine wiederholten Abfragen über mehrere Formularseiten hinweg auslöst. So bleibt die Funktion für alle außer den meistbesuchten Websites deutlich innerhalb der 2.500 kostenlosen Anfragen pro Tag, die in jedem Schlüssel enthalten oder ohne Schlüssel von einer einzelnen Adresse aus verfügbar sind.

Eine sinnvolle Vorgabe erspart das Scrollen durch eine Liste mit hundert Einträgen, und der Besucher behält die volle Kontrolle, falls sie falsch liegt. Details zu den Feldern finden Sie in der Dokumentation zur IPv4-Abfrage.