web-dev-qa-db-fra.com

Adresse IP de la machine en PHP donne :: 1 mais pourquoi?

J'essaie de récupérer l'adresse IP de ma machine via php. Pour cela j'écris le code comme:

<?php echo  "<br />".$_SERVER['REMOTE_ADDR'];?>

Mais ce morceau de code ne fonctionne pas. Il revient "::1 ". Veuillez m'aider à obtenir l'adresse IP réelle.

34
John

::1 est l'IP réelle. Il s'agit d'une adresse de bouclage ipv6 (c'est-à-dire localhost). Si vous utilisiez ipv4, ce serait 127.0.0.1.

Si vous souhaitez obtenir une adresse IP différente, vous devrez vous connecter au serveur via une interface réseau différente.

58
Quentin

Si vous essayez d'exécuter localhost, cette réponse résoudra votre problème. Quelques changements sur

Apache2/httpd.conf 

rechercher tous les mots "écouter" ex:

Listen 80

Faites comme ça.

Listen 127.0.0.1:80

que de redémarrer votre Apache

$_SERVER[REMOTE_ADDR]

montrera Listen 127.0.0.1

vous pouvez voir la réponse dans ce lien de réponse détaillé

9
Yigit Tanriverdi

Si vous voulez obtenir l'adresse IP de l'utilisateur, vous pouvez faire quelque chose comme:

<?php
    if(!empty($_SERVER['HTTP_CLIENT_IP'])){
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else{
      $ip=$_SERVER['REMOTE_ADDR'];
    }
?>

<?php echo  "<br />".$ip;?>

Il obtiendra l'adresse IP réelle de l'utilisateur, indépendamment des procurations, etc.

7

$ _SERVER ['REMOTE_ADDR'] est l'adresse IP du client.

$ _SERVER ['SERVER_ADDR'] est l'adresse IP du serveur.

Référence: http://php.net/manual/en/reserved.variables.server.php

3
Tushar