Come realizzare una pagina PHP che mostra l’indirizzo IP

Il codice php completo per mostrare l’indirizzo ip con il quale stiamo navigando, il reverse lookup (risoluzione inversa del dns), le varie informazioni sul browser in uso (user agent) ed il sito di provenienza (referente).
Un intero progetto spiegato passo dopo passo, subito pronto, facile da comprendere e personalizzare, per realizzare un piccolo sito web o arricchire il proprio blog.


Per lavoro spesso mi capita di imbattermi nella mansione di amministratore di rete. L’infrastruttura che gestisco dispone di più connessioni internet, ciascuna fornita da diversi provider. Per conoscere l’ip esterno di ogni singolo client aziendale ho avuto la necessità di trovare un sistema facile ed immediato, che risultasse elementare anche per il personale meno pratico con il computer.
Ho così pensato di realizzare un piccolo sito web in grado di fornire tali informazioni in maniera chiara anche a chi non ha alcuna competenza informatica. Per rendere il tutto ancora più semplice ho cercato un nome intuitivo da ricordare ed ho scelto così il dominio dimmiip.it.

dimmiip-it-schermata

La pagina oltre a fornire l’indirizzo ip in uso su internet, mostra anche altri piccoli dettagli come la risoluzione del dns, l’user agent ed il sito di sito di provenienza. Per sviluppare dimmiip.it sono stati necessari appena una decina di minuti, ricorrendo esclusivamente alle variabili globali ed alle funzioni predefinite offerte dal linguaggio php.
Nel caso vorreste realizzare un progetto simile, dopo avervi illustrato nei dettagli ogni singola stringa, alla fine dell’articolo ho condiviso con voi il codice completo che ovviamente potrete personalizzare come meglio preferite.

La variabile globale $_SERVER, predefinita in PHP e di tipo array, permette di ottenere una vasta gamma di informazioni riguardanti il lato server, il lato client e la connessione tra di essi. Consultando le sue diverse chiavi potremo visualizzare diverse indicazioni come l’indirizzo IP pubblico, l’user agent o il referente per l’accesso al sito.
Per ottenere il reverse lookup del proprio indirizzo ip basterà invece ricorrere alla semplice funzione gethostbyaddr.
Ovviamente per la stampa a video di tutti i risultati basterà utilizzare il costrutto echo seguito dalla variabile che intendiamo visualizzare. Ecco gli esempi che ho utilizzato nel mio caso.


Mostrare l’indirizzo IP del computer in uso

Possiamo ottenere l’indirizzo IP richiamando la chiave REMOTE_ADDR della variabile globale $_SERVER e come nel mio esempio, associando il risultato a $ip.

$ip = $_SERVER['REMOTE_ADDR'];

L’indirizzo IP di un computer serve ad identificarlo in maniera univoca all’interno di una rete.
Se però la rete in questione è Internet spesso accade che questo venga condiviso da più macchine. Connettendosi ad Internet attraverso un router o un access point Wi-Fi, l’indirizzo IP pubblico infatti sarà lo stesso per tutti i dispositivi ad essi collegati.

La maggior parte degli abbonamenti Internet per uso privato offrono un indirizzo IP dinamico che varia ad ogni connessione. Tuttavia in determinate tipologie di contratto, l’Internet Servrice Provider offre un idirizzo IP statico che resta sempre invariato. Questo è indispensabili per le aziende che dispongono nella propria sede di server web, mail o ftp.

Mostrare il reverse lookup dell’indirizzo IP

E’ possibile ricavare il reverse lookup di un indirizzo utilizzando la funzione gethostbyadd() ed immettendo come argomento l’indirizzo IP numerico, che in questo caso troviamo nella variabile $ip già precedentemente assegnata.


$nomehost = gethostbyaddr($ip);

La risoluzione DNS inversa, più comunemente conosciuta nella notazione inglese Reverse DNS lookup, consente di risalire all’hostname (ovvero il nome dell’host connesso ad internet) attraverso l’indirizzo IP della macchina.
Ai fini pratici questo può tornare utile per identificare facilmente il nome del service provider relativo all’indirizzo IP in uso. Si tratta di informazioni tutt’altro che scontate, quando, ad esempio, in un azienda la connessione internet viene gestita da più linee dati gestite da ISP differenti.

Mostrare informazioni sul browser in uso

Per ottenere l’user agent è necessario ricorrere nuovamente alla variabile globale $_SERVER, richiamando questa volta la chiave HTTP_USER_AGENT. Nel mio esempio ho associato il suo risultato ad una variabile che ho chiamato $browser.

$ip = $_SERVER['REMOTE_ADDR'];

L’user agent è l’applicazione necessaria per connettersi ad un server remoto. Nel nostro caso quindi si parla del browser utilizzato per navigare in internet, il quale si connette appunto al web server che ospita il sito.
Tutte le volte che visitiamo un sito web, per poter comunicare correttamente con il server, il programma in uso invia automaticamente una stringa che include dati come il nome dell’applicazione client, la versione, il sistema operativo, talvolta la lingua in uso e, nel caso di un browser, il suo motore di rendering. Questo insieme di informazioni raccolte rappresentano quindi l’user agent.

Mostrare il sito di origine

Con il solito codice, interpellando invece la chiave HTTP_REFERER, potremo ottenere informazioni riguardo il sito attraverso il quale siamo approdati alla pagina in questione. Questa volta però, per maggiore accuratezza, è opportuno ricorrere al costrutto if in modo da stampare un apposito messaggio qualora si acceda direttamente alla pagina senza necessariamente provenire da un link.

$referrer = $_SERVER['HTTP_REFERER'];
if ($referrer == "") {$referrer = "Accesso diretto al sito";}

Ad esempio, se abbiamo aperto il nostro sito dopo una ricerca su Google, potremo ottenere come referente https://www.google.it/. Nel caso in cui invece dovessimo accedere alla pagina digitando direttamente l’url nella barra degli indirizzi, al posto del referente otterremo la scritta Accesso diretto al sito.

Il codice completo

Dopo aver assegnato un valore ad ogni variabile, basterà ricorrere al comando echo per stamparne il risultato sullo schermo.
Ecco come promesso il codice completo del progetto. Basterà effettuare un semplice copia/incolla in un normale editor di testo, salvare ovviamente il file con estensione .php e lanciarlo dal vostro server web per vederlo in funzione.

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$nomehost = gethostbyaddr($ip);
$browser = $_SERVER['HTTP_USER_AGENT'];
$referrer = $_SERVER['HTTP_REFERER'];
if ($referrer == "") {
$referrer = "Accesso diretto al sito";
}
?>


Indirizzo IP: <?php echo $ip  ?> <br  />
Reverse Lookup: <?php echo $nomehost ?> <br />
Browser (User Agent): <?php echo $browser ?> <br />
Referente: <?php echo $referrer ?>

Conclusioni

Come avete visto bastano davvero pochissime righe di codice per realizzare una pagina in grado di fornire tutte le informazioni utili ad identificare il nostro computer on line.
Attraverso l’uso di un foglio di stile css potrete profondamente personalizzare il progetto che vi ho fornito, così da dare vita ad un vero e proprio mini sito come ho fatto io con dimmiip.it, oppure perché no, potrete utilizzare tale codice per personalizzare il footer del vostro blog offrendo un servizio in più ai vostri lettori.

Se avete pubblicato on line la vostra versione personalizzata del progetto, se vi fa piacere, segnalatela nei commenti così da scambiarci qualche utile consiglio.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*