Kan ik in een php script dit aanroepen en dan voor het UIP adres $_SERVER['GEOIP_ADDR'] invullen en dan de uitkomende gegevens gebruiken? En zo ja, hoe dan?
Dit leek me een makkelijker oplossing dan iets met een database op de hostingsserver te zetten en die steeds te moeten updaten.
IP-adressen zijn niet geografisch gekoppeld. Het kán altijd aangeven waar iemand vandaan komt, maar vaak is dat juist niet zo.
De coördinaten van mijn eigen privé IP-adres komt uit in Amersfoort. Mogelijk een knooppuntcentrale voor mijn VDSL verbinding, terwijl ik in de nabijheid van Woerden woon. Een behoorlijk verschil dus. Verder zijn er ook internetproviders in Nederland die IP-adressen gebruiken die in het buitenland geregistreerd zijn. Een mooi voorbeeld is AOL (bestaat dat nog?) en T-Mobile.
Verder is $_SERVER['GEOIP_ADDR'] alleen beschikbaar als je mod_geoip hebt geïnstalleerd op je webserver.
Heb je al eens naar geolocatie in HTML5 gekeken? Nadeel daarvan is onder andere dat deze een pop-up toont die gebruikers om toestemming vraagt, maar het grote voordeel is dat de locatie vervolgens veel nauwkeuriger en actueel is. Weigert de gebruiker de toestemming, dan kun je alsnog IP-geolocatie als plan B toepassen.
Mijn ervaring is dat gratis geolocatie-services er veel te vaak te ver naast zitten. Ik heb al meer dan tien jaar een vast IP-adres in Eindhoven, maar tot op de dag van vandaag plaatsen veel services mij in op het hoofdkantoor van KPN in Den Haag, op een internetknooppunt in Amsterdam of op een ander knooppunt bij een terrein van Defensie in Sint-Oedenrode. De site die jij noemt, denkt dat ik in Cuijk in Zuid-Limburg zit...
Voorbeeld:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Geolocatie in HTML5</title>
<meta name="author" content="Ward van der Put">
</head>
<body>
<p id="positie"></p>
<div id="kaartje"></div>
<script>
// Deze JavaScript-functie meldt de geolocatie-eigenschappen
// position.coords.latitude (breedtegraad) en position.coords.longitude
// (lengtegraad) van de huidige positie. Deze geografische coördinaten
// geven we vervolgens door aan de API van Google Maps.
function showPosition(position)
{
document.getElementById("positie").innerHTML
= "Breedtegraad: " + position.coords.latitude
+ "<br>Lengtegraad: " + position.coords.longitude;
var pos = position.coords.latitude + "," + position.coords.longitude;
var src = "http://maps.googleapis.com/maps/api/staticmap?center="
+ pos + "&zoom=15&size=640x480&maptype=roadmap&sensor=false";
document.getElementById("kaartje").innerHTML = "<img src='"
+ src + "' alt='Google Maps'>";
}
// Als een browser geolocatie met HTML5 ondersteunt, kun je de huidige
// locatie ophalen met de methode getCurrentPostion() van het object
// navigator.geolocation. Als er een positie wordt gevonden, dan geven
// we die door aan de bovenstaande functie showPosition().
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
document.getElementById("positie").innerHTML
= "Geolocatie wordt niet ondersteund door deze browser.";
}
</script>
</body>
</html>
@Ward
Dank je voor je tip. Mijn locaties worden wel steeds op een paar km nauwkeurig aangegeven ... ;-)
Ik had "geolocatie in HTML5" al eens bekeken. Ik was niet zo gecharmeerd van de pop-up en daarom was het voor mij in eerste instantie afgevallen. Daarom de vraag hoe ik de data die door die andere site wordt gegeneerd zou kunnen gebruiken. Is het theoretisch wel mogelijk? Of moet ik dat gewoon vergeten?
Er zijn meerdere API's die je kunt gebruiken (Google is je vriend), maar zoals gezegd zijn de gratis services onbetrouwbaar. Iets met een gegeven paard...
Je moet zelf op twee punten overwegen wat acceptabel is voor je applicatie:
• Hoeveel procent van de locaties mag onjuist zijn?
• Hoe groot mag de geografische afwijking zijn?
De overweging "in minstens 75% van de gevallen moet het land juist zijn" is een andere dan "in meer dan 95% van de gevallen moet minimaal de plaats juist zijn".
Beste Ward,
Google is mijn vriend niet. Maar dat maakt ook niet uit ;-)
De ervaringen die ik met andere trackers heb (statcounter, piwik) over de locatie zijn voor mij bevredigend om voor mijn eigen gebruik en interesse te gebruiken. Als meer dan 75% kloppend is ben ik al ruim tevreden. Maar alleen land (krijg ik al met $_SERVER['GEOIP_COUNTRY_NAME']) vind ik wat summier.
Alleen: ik ben te weinig onderlegd met hoe ik de data uit "https://geoiptool.com/api/view/?ip=8.8.8.8" via php kan oproepen en kan gebruiken. Is het mogelijk of niet?
Ik heb net ook nog even de nauwkeurigheid getest van de HTML5-geolocatie. Op mijn laptop zit ik volgens Firefox in de tuin van de buren en volgens Chrome en Edge in het plantsoen aan de overkant van de straat. Mijn telefoon doet het beter: die plaatst me in mijn eigen achtertuin terwijl ik binnen zit.
Het werkt en ook ook weer niet met de geoip-tool. Als ik het in de browser op vraag krijg ik dat ik wel een city, maar als ik hetzelfde adres op vraag met de php code dan komt er