227 votes

Obtenir l'adresse IP du client en utilisant PHP

Je veux obtenir l'adresse IP du client qui utilise mon site web. J'utilise le programme PHP $_SERVER superglobal :

$_SERVER['REMOTE_ADDR'];

Mais je vois qu'il ne peut pas donner l'adresse IP correcte en utilisant ceci. J'obtiens mon adresse IP et je vois qu'elle est différente de mon adresse IP et je peux également voir mon adresse IP sur certains sites web comme :

http://whatismyipaddress.com/

Je colle l'adresse IP qui donne ma fonction PHP mais ce site web ne montre aucun résultat à ce sujet. Comment ce problème survient-il et comment puis-je obtenir l'adresse IP du client ?

5 votes

2 votes

Si vous êtes sur un serveur local, ce sera différent (par exemple : 192.168.xxx.xxx), car vous vérifiez auprès de whatsmyip que vous obtenez l'ip de votre isp qu'ils vous ont fourni.

0 votes

Sur votre ordinateur vous verrez votre IP privée (192...) et sur les sites web vous verrez votre IP publique (84...). En général, votre IP publique est la seule intéressante.

-24voto

user3012239 Points 9

Il fonctionne également très bien pour les adresses IP internes :

 function get_client_ip()
 {
      $ipaddress = '';
      if (getenv('HTTP_CLIENT_IP'))
          $ipaddress = getenv('HTTP_CLIENT_IP');
      else if(getenv('HTTP_X_FORWARDED_FOR'))
          $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
      else if(getenv('HTTP_X_FORWARDED'))
          $ipaddress = getenv('HTTP_X_FORWARDED');
      else if(getenv('HTTP_FORWARDED_FOR'))
          $ipaddress = getenv('HTTP_FORWARDED_FOR');
      else if(getenv('HTTP_FORWARDED'))
          $ipaddress = getenv('HTTP_FORWARDED');
      else if(getenv('REMOTE_ADDR'))
          $ipaddress = getenv('REMOTE_ADDR');
      else
          $ipaddress = 'UNKNOWN';

      return $ipaddress;
 }

11 votes

100% copie de la réponse de Sivanesh Govindan

1 votes

Return ($ip=getenv('HTTP_CLIENT_IP' ))?$ip :( ($ip=getenv('HTTP_X_FORWARDED_FOR' ))?$ip :( ($ip=getenv('HTTP_X_FORWARDED' )) ? $ip :( ($ip=getenv('HTTP_FORWARDED_FOR' ))?$ip :( ($ip=getenv('HTTP_FORWARDED' ))?$ip :( ($ip=getenv('REMOTE_ADDR' ))?$ip:false ))))) ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X