Jump to content
  • Please do not post a message for the purpose of insulting, incitement to hatred, sexual remarks and any other which does not respect our terms of use !

Obtenir le pays de l'user à partir de l'IP


Ubrain

Recommended Posts

Salut les Jeunes, ça boum ?

Promis j’arrête

 

Ah l'IP, cette magnifique suite de chiffres prise en otage tous les trois jours par des hXk3r d'élite.... 

Habituellement, cette suite de chiffres sert plus à vérifier les doubles comptes ou à identifier des utilisateurs (sur wikipedia par exemple)

 

Bien que l'on préfère garder son IP privé, sachez que cette dernière est présente un peu partout sur le vaste internet,

En effet, il est plus que très simple de récupérer l'adresse IP d'un utilisateur, rien qu'en chargeant la page d'un site.
Par ailleurs, un site peut récupérer bien plus d'informations sur vous, tel que le port, le navigateur, votre position ect...

 

Bon, cessons de tourner autour du pot, aujourd'hui je vais vous montrer comment gagner 200 euros en 12 minutes récupérer le pays d'un visiteur de votre site à partir de son adresse IP et ce, sans qu'il ait à accepter un popup disant que le site souhaite accéder à sa position.
 

Prérequis :

  • Connaissances basiques sur le PHP (variables)
  • Une connexion internet (je ne me moque pas de vous puis-ce que l'on va utiliser un site externe)

 

Pour commencer, on va récupérer l'adresse IP de l'utilisateur, pour cela on va utiliser la variable globale $_SERVER 

Vous allez donc devoir écrire ceci dans votre fichier :

<?php
// on récupère l'ip dans la variable "ip"
$ip = $_SERVER['REMOTE_ADDR'];
?>

 

Pour l'instant, on à l'adresse IP de l'utilisateur dans la variable IP, vous pouvez essayer ce code en tapant 

<?php
// on récupère l'ip dans la variable "ip"
$ip = $_SERVER['REMOTE_ADDR'];
echo 'Mon ip est '.$ip;
?>

Ceci devrait afficher par exemple "Mon ip est 122.444.666.777"

Maintenant on va devoir utiliser une ressource externe qui est le site 

To access this link, please log in.

 qui propose plein d'outils sur l'ip.
On va donc lui demander de remonter la racine de l'ip pour retrouver le pays de l'utilisateur.
Je ne vais pas vous expliquer comment fonctionne la racine d'une IP ect... car ce sujet est très complexe et si vous souhaites vous y intéresser, voici le lien vers 

To access this link, please log in.

 

Donc on va lui demander de faire tout ce travail à notre place (c'est plus rapide et moins long ;))
Pour cela on va utiliser ce lien : 

To access this link, please log in.


On va y ajouter l'information "ip" par get (en l'ajoutant dans la barre d'adresse)

Donc on va demander au site api.hostip.info de trouver le pays de l'adresse ip du visiteur,
Pour cela on va utiliser file_get_contents pour récupérer les informations que renvoie cette page :

<?php
// on récupère l'ip dans la variable "ip"
$ip = $_SERVER['REMOTE_ADDR'];

// on demande au site de récupérer le pays à partir de l'ip donnée
$pays = file_get_contents('http://api.hostip.info/country.php?ip='.$ip);
?>


Et voilà ! La variable $pays contient le pays du visiteur, par exemple, pour la france, ce sera FR
Pour l'Amérique ce sera US, pour l’Angleterre ce sera EN, pour l'Espagne ES ect...

Citation

"C'est bien beau tout ça... mais en cas d'erreur ou d'adresse IP inexistante ?

 

Et bien le pays retourné sera "XX", si vous voulez par exemple détecter si le pays de l'ip est bien localisable, insérez-y ce code en plus :

<?php
if($pays != "XX" || $pays != null){
  echo "Vous etes en ".$pays;
}else{
  echo "Impossible de définir votre pays !";
}
?>

 

Voilà, j'espère que ce petit "tuto" vous aura plu et qu'il vous servira par exemple pour savoir si l'utilisateur doit accéder à la version anglaise du site ou la version Française ou encore pour faire des statistiques ect..

 

Bonne continuation à vous tous !

>_UBrain

Edited by Ubrain
Pour CPTHENRI

 

 

Link to post
Share on other sites

il y a 12 minutes, Arwantys a dit :

Le mieux reste d’héberger la liste de toutes les IP sur ses propres serveurs, si l’API est down c’est la merde ^^

 

Ce n'est pas faux, le mieux serait d'utiliser une alternative au cas où l'API est down avec file_exists
Par exemple :

<?php
// on récupère l'ip dans la variable "ip"
$ip = $_SERVER['REMOTE_ADDR'];

// on vérifie si l'API n'est pas down
if(file_exists('http://api.hostip.info/country.php')){
  $pays = file_get_contents('http://api.hostip.info/country.php?ip='.$ip);
}elseif(file_exists('http://autreapi/foundip.php'){
  // si le premier API est down, alors on va vers une autre API
  $pays = file_get_contents('http://autreapi/foundip.php?ip='.$ip);
}else{
  // encore une fois, si le second API est down, on va vers une autre API
  $pays = file_get_contents('http://encoreuneautreapi?ip='.$ip);
}
?>

 

 

Link to post
Share on other sites

  • Modérateur
Le 30/12/2018 à 19:36, Ubrain a dit :

set

Il en manque une ! (de lettre) 

To access this image, please log in.

 

 

Sinon merci pour le tutoriel, je vais rien dire d'original donc je ne vais rien dire d'autre. 

~ Henri

Développeur WEB, NodeJS et C

 

Discord: Henri#003

Twitter: @UnrealHenri

  • Haha 1
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...