web-dev-qa-db-fra.com

Obtenir l'emplacement actuel de l'utilisateur

Comment puis-je déterminer l'emplacement actuel de l'utilisateur en fonction de l'IP (je suppose que cela fonctionne de cette façon).

29
Jacek Francuz
<?php
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$country = $geo["geoplugin_countryName"];
$city = $geo["geoplugin_city"];
?>
28
Hamza

Édité

Changer freegeoip.net en ipinfo.io

<?php    
function get_client_ip() {
        $ipaddress = '';
        if (isset($_SERVER['HTTP_CLIENT_IP']))
            $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
        else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
            $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_X_FORWARDED']))
            $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
        else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
            $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_FORWARDED']))
            $ipaddress = $_SERVER['HTTP_FORWARDED'];
        else if(isset($_SERVER['REMOTE_ADDR']))
            $ipaddress = $_SERVER['REMOTE_ADDR'];
        else
            $ipaddress = 'UNKNOWN';
        return $ipaddress;
    }
 $PublicIP = get_client_ip(); 
 $json  = file_get_contents("http://ipinfo.io/$PublicIP/geo");
 $json  =  json_decode($json ,true);
 $country =  $json['country'];
 $region= $json['region'];
 $city = $json['city'];

?>
19
NaveenDA

Essayez ce code en utilisant le service hostip.info :

$country=file_get_contents('http://api.hostip.info/get_html.php?ip=');
echo $country;

// Reformat the data returned (Keep only country and country abbr.)
$only_country=explode (" ", $country);

echo "Country : ".$only_country[1]." ".substr($only_country[2],0,4);
9
Bedh
<?php
$query = @unserialize (file_get_contents('http://ip-api.com/php/'));
if ($query && $query['status'] == 'success') {
echo 'Hey user from ' . $query['country'] . ', ' . $query['city'] . '!';
}
foreach ($query as $data) {
    echo $data . "<br>";
}
?>

Essayez ce code en utilisant cette source. Ça marche!

9
Adnan Rasheed

MaxMind GeoIP est un bon service. Ils ont également un service de recherche gratuit au niveau de la ville.

4
glomad

Vous voudrez peut-être jeter un oeil à Localisateur Whip géographique trouvé à PHPClasses

3
madkris24

comme PHP repose sur le serveur, l'emplacement en temps réel ne peut être fourni que par un emplacement statique. Il est préférable d'éviter de s'appuyer sur le JS plutôt que d'utiliser php. Mais il est nécessaire de poster les données js sur php pour pouvoir les programmer facilement sur le serveur.

2
Venkat Sai

L'ancienne API freegeoip est maintenant obsolète et ne sera plus disponible à partir du 1er juillet 2018.

La nouvelle API provient de https://ipstack.com . Vous devez créer le compte dans ipstack.Ensuite, vous pouvez utiliser la clé d'accès dans l'URL de l'API.

$url = "http://api.ipstack.com/122.167.180.20?access_key=ACCESS_KEY&format=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response);
$city  = $response->city; //You can get all the details like longitude,latitude from the $response .

Pour plus d'informations, cliquez ici:/ https://github.com/apilayer/freegeoip

0
lalithkumar

Une adresse IP vous donne un emplacement peu fiable. Vous pouvez définir l'emplacement de Ajax lors du chargement avec JS s'il n'est pas essentiel d'avoir l'emplacement au début. (En outre, l'utilisateur doit vous donner la permission d'y accéder.)

Géolocalisation Html5

0
Sam Pettersson