Hoi,

Ik wilde iets doen met het opvragen van de geolocatie van een bezoeker om een soort bezoekerslogboekje voor mezelf bij te kunnen houden.

Nu kwam ik dit tegen:
https://geoiptool.com/api/view/?ip=8.8.8.8


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.

Alvast bedankt voor jullie gewaardeerde mening.

Jop
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.
@ Arien
Dank je voor je reactie. Niet helemaal antwoord op mijn vraag helaas. Maar even op jouw antwoorden in te gaan:
Het kán altijd aangeven waar iemand vandaan komt, maar vaak is dat juist niet zo.

Daar ben ik me van bewust, maar vaak klopt het ook weer wel.

Verder is $_SERVER['GEOIP_ADDR'] alleen beschikbaar als je mod_geoip hebt geïnstalleerd op je webserver.

Kennelijk staat dat aan bij mijn provider, want die variabele werkt.

Blijft de vraag of ik in een php script de data van die api kan oproepen en gebruiken ...
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?
https://geoiptool.com geeft bij mij niet eens een woonplaats oid weer.
Alleen het land laat hij zien, de rest staat op NULL.

Dus echt betrouwbaar is het niet.

Dit kan je gebruiken om de info in je php te verwerken

<?php
$data = file_get_contents('https://geoiptool.com/api/view/?ip=8.8.8.8');
$obj = json_decode($data);

var_dump($obj);
?>


@ward,
Cuijk ligt naast utrecht als ik mij niet vergis, niet in zuid limburg.


@Randy:
Dank je wel. Zo iets bedoelde ik!

Cuijk ligt onder Nijmegen volgens mij, net in Noord Brabant.
@Randy Cuijk ligt in Noord-Brabant om precies te zijn, maar https://geoiptool.com/ zegt dat mijn Cuijk in Limburg ligt ;-)

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
["city"]=> NULL ["region_code"]=> NULL ["region_name"]=> string(1) " " ["success"]=> bool(true) ["is_url"]=> bool(false)
terug en lijkt het dat de gegevens van mijn provider opgevraagd worden.

Reageren