2012-05-09 19 views
24

Sto cercando di recuperare l'indirizzo IP della mia macchina tramite php. Per quello sto scrivendo il codice come:L'indirizzo IP della macchina in PHP fornisce: 1 ma perché?

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

Ma questo pezzo di codice non funziona. Sta restituendo "::1". Per favore aiutami come ottenere l'attuale indirizzo IP.

+0

'$ _SERVER [ 'REMOTE_ADDR']' non è l'indirizzo IP del la tua macchina. – hakre

+0

Possibili duplicati: [Identificare l'indirizzo IP del server con PHP] (http://stackoverflow.com/questions/5800927/identify-server-ip-address-with-php) - o se è necessaria l'altra cosa - [Come trovo l'indirizzo IP di un utente con PHP?] (http://stackoverflow.com/questions/55768/how-do-i-find-a-users-ip-address-with-php) – hakre

+0

Di quale macchina? Il tuo server su cui è in esecuzione PHP? Il desktop su cui è in esecuzione il browser che si connette al server? – Quentin

risposta

39

::1 è l'IP effettivo. È un indirizzo di loopback ipv6 (cioè localhost). Se steste usando IPv4 sarebbe 127.0.0.1.

Se si desidera ottenere un indirizzo IP diverso, è necessario connettersi al server tramite una diversa interfaccia di rete.

+0

ok grazie mille. Questo è nuovo per me. Grazie ancora. – John

-2

Guardate l'output di phpinfo(). Se l'indirizzo non si trova su quella pagina, l'indirizzo non è disponibile direttamente tramite PHP.

+0

'$ http_client_ip = $ _SERVER [' HTTP_CLIENT_IP ']; $ http_x_forwarded_for = $ _ SERVER ['HTTP_X_FORWARDED_FOR']; $ remote_addr = $ _ SERVER ['REMOTE_ADDR']; if (!empty ($ http_client_ip)) {$ indirizzo_ip = $ http_client_ip;} else if (! empty ($ HTTP_X_FORWARDED_FOR)) {$ indirizzo_ip = $ HTTP_X_FORWARDED_FOR;} altro {$ indirizzo_ip = $ REMOTE_ADDR;} echo $ indirizzo_ip ;' –

+1

Perché l'improvviso downvote? Questa risposta mostra che le informazioni ** o ** o ** non sono ** disponibili per PHP. – dotancohen

5

se si intende ottenere l'indirizzo IP dell'utente, si può fare qualcosa di simile:

<?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;?> 

Sarà ottenere l'indirizzo IP reale dell'utente, a prescindere delle deleghe ecc

+0

Non è la risposta alla domanda che è stata posta, ma è una cosa utile. – Leri

+0

Supponevo che ciò significasse realmente l'OP, ma potrei sbagliarmi. –

+0

Penso che lui/lei fosse semplicemente curioso perché '$ _SERVER ['REMOTE_ADDR']' restituisce ':: 1'. Forse ho torto. Qualunque cosa sia +1 da parte mia – Leri

5

Se si sta tentando di eseguire localhost, questa risposta risolverà il problema. A pochi cambiamenti sul

apache2/httpd.conf 

ricerca tutti "ascoltano" le parole es:

Listen 80 

Fai come questo.

Listen 127.0.0.1:80 

di riavviare l'apache

$_SERVER[REMOTE_ADDR] 

mostrerà Listen 127.0.0.1

si può vedere la risposta in questo detailed answer link