2010-12-12 16 views
16

Sto lavorando su un sito Web e una delle cose che mi piacerebbe fare è visualizzare il mio indirizzo IP agli utenti. Il sito Web è realizzato con CodeIgniter, quindi stavo cercando di trovare il mio server IP con PHP. L'indirizzo IP può cambiare (è un roamer), quindi mi piacerebbe trovarlo in modo dinamico, non solo hardcarlo. Ho provato questo:PHP display server Indirizzo IP

$data['hostname'] = NULL; 
$data['ip'] = NULL; 
$var = gethostname(); 
if ($var === FALSE) { 
    $var = NULL; 
} else { 
    $data['hostname'] = $var; 
    $data['ip'] = gethostbyname($var); 
} 

Tuttavia, invece di darmi il nome host e il PI, ho ricevuto: "Moria" e "127.0.1.1". Non proprio quello che sto cercando. Piuttosto, dovrebbe dire "Moria.student.rit.edu" per il nome host e l'indirizzo IP. Qualsiasi aiuto?

risposta

-5

Se l'applicazione laravel è in esecuzione su un server interno, è possibile utilizzare il seguente per ottenere l'indirizzo esterno del server:

$external_ip = exec('curl http://ipecho.net/plain; echo'); 
+2

Cattivo, cattivo e sbagliato. Questo codice è molto scarso e non dovrebbe mai essere usato in produzione. Dovresti usare la libreria intrinseca PHP Curl. Questo evita di forgiare il processo http per generare una shell. Chissà se "arricciare" è nel percorso? A cosa serve l'echo? In ogni caso, un server web non dovrebbe mai essere consentito al di fuori del perimetro dell'organizzazione. Se necessario, dovrebbe passare tramite un proxy interno. – dland

+2

Nessuna menzione di laravel esiste su questa pagina intera accetta la tua. -1 – TheBlackBenzKid