Localiser une IP en php

Résolu
Bonjour,
Je trouve des réponses sur https://forums.commentcamarche.net/forum/ mais elles ne sont pas récentes; j'en ai essayé quelques unes : soit ça ne fonctionne pas du tout, soit le nombre d'interrogations est limité, ...
Bref, comment obtenir le pays et si possible la ville correspondants à une adresse IP ?
Merci

32 réponses

Résumé de la discussion

L’objectif est d’obtenir le pays et la ville correspondants à une adresse IP via GeoIP en PHP, en évaluant différentes implémentations et bibliothèques et en s’appuyant sur des solutions discutées en ligne. Des échanges portent sur l’utilisation de la directive use pour les namespaces GeoIP2 ou GeoIP, sur les soucis liés à l’installation via Composer et sur l’erreur fatale lorsque le fichier GeoLite2-City.mmdb est absent ou illisible. D'autres échanges décrivent des stratégies pour éviter les exceptions non capturées, comme tester l’IP et conditionner l’appel au lecteur, ou utiliser une nouvelle variable plutôt que de réutiliser $IP pour stocker le résultat.

Bobot (l’IA à votre service)
  1. Bonjour,
    Pour obtenir ce que je montre j'utilise
    print_r($record);

    Je ne parviens pas à coller le résultat complet sur ce forum, alors j'ai mis la totalité du résultat de print_r dans ce fichier https://www.rudyv.be/Temp/Structure.txt

    print_r($record->subdivisions[1]);
    donne le résultat ci-dessous
    j'ai donc compris que je dois utiliser
    $record->subdivisions[1]->names['fr']
    : ça fonctionne !
    Merci beaucoup

    GeoIp2\Record\Subdivision Object
    (
        [validAttributes:protected] => Array
            (
                [0] => confidence
                [1] => geonameId
                [2] => isoCode
                [3] => names
            )
        [locales:GeoIp2\Record\AbstractPlaceRecord:private] => Array
            (
                [0] => en
            )
        [record:GeoIp2\Record\AbstractRecord:private] => Array
            (
                [geoname_id] => 2796741
                [iso_code] => WHT
                [names] => Array
                    (
                        [de] => Provinz Hennegau
                        [en] => Hainaut Province
                        [fr] => Hainaut
                        [pt-BR] => Hainaut
                    )
            )
    )
    0