Ottieni l'indirizzo IP dell'utente in PHP

Subodh Poudel 22 giugno 2021
PHP
  1. Usa $_SERVER['REMOTE_ADDR'] per trovare l’indirizzo IP dell’utente in PHP
  2. Usa $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] e $_SERVER['HTTP_X_FORWARDED_FOR'] per trovare l’indirizzo IP dell’utente
  3. Utilizzare l’operatore ternario e la funzione isset() per trovare l’indirizzo IP dell’utente
Ottieni l'indirizzo IP dell'utente in PHP

Introdurremo un modo per accedere all’indirizzo IP dell’utente da un server in PHP utilizzando la variabile super globale $_SERVER con REMOTE_ADDR come unico elemento dell’array. È usato come $_SERVER['REMOTE_ADDR'].

Mostreremo un altro modo per accedere all’indirizzo IP dell’utente in PHP utilizzando l’espressione condizionale per verificare se gli indirizzi IP dell’utente provengono da Internet condiviso, da un proxy o è il vero indirizzo IP. Questo metodo utilizza elementi di array come HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR e REMOTE_ADDR.

Ti mostreremo un metodo rapido per ottenere l’indirizzo IP dell’utente in PHP usando l’operatore ternario e la funzione isset(). Questo metodo utilizza anche gli elementi dell’array come HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR e REMOTE_ADDR nella variabile super globale $_SERVER.

Usa $_SERVER['REMOTE_ADDR'] per trovare l’indirizzo IP dell’utente in PHP

Possiamo usare l’espressione $_SERVER['REMOTE_ADDR'] per trovare l’indirizzo IP da cui l’utente accede alla pagina corrente. $_SERVER è la variabile super globale in PHP e accetta una varietà di elementi dell’array come argomenti. Usiamo REMOTE_ADDR come elemento di array nella variabile $_SERVER per accedere all’effettivo indirizzo IP del client. Notare che $_SERVER['REMOTE_ADDR'] non fornisce sempre l’indirizzo IP corretto del client in tutti i casi. Discuteremo gli altri casi di seguito. Assicurati che l’API del tuo server (SAPI) sia ben configurata in modo che l’espressione sopra restituisca l’IP reale della connessione.

Nell’esempio seguente, il localhost viene utilizzato come server. Pertanto, restituisce l’indirizzo IP di loopback. Per ulteriori informazioni sull’indirizzo di loopback, fare riferimento a qui. Supponiamo che l’URL del seguente script PHP sia http://localhost/index.php. Emette l’indirizzo IP della macchina locale come ::1. ::1 è la rappresentazione IPv6 del localhost.

Ad esempio, assegna $_SERVER['REMOTE_ADDR'] a una variabile ip_addr. Quindi, stampa la variabile usando echo.

Codice di esempio:

# php 7.x
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
echo "The user's IP address is - ".$ip_add;
?>

Produzione:

The user's IP address is - ::1

Usa $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] e $_SERVER['HTTP_X_FORWARDED_FOR'] per trovare l’indirizzo IP dell’utente

Possiamo usare gli elementi dell’array della variabile superglobale $_SERVER come $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_CLIENT_IP'] e $_SERVER['HTTP_X_FORWARDED_FOR'] per trovare l’indirizzo IP di l’utente in PHP. Usa $_SERVER['REMOTE_ADDR'] per trovare il vero indirizzo IP dell’utente. Usa $_SERVER['HTTP_CLIENT_IP'] per trovare l’indirizzo IP quando l’utente accede alla pagina da Internet condiviso. Usa $_SERVER['HTTP_X_FORWARDED_FOR'] per trovare l’indirizzo IP quando l’utente utilizza un proxy per accedere alla pagina web. Nota che intestazioni come HTTP_X_FORWARDED_FOR e HTTP_CLIENT_IP possono essere contraffatte in quanto possono essere impostate da chiunque. A volte, potrebbero non rappresentare il vero indirizzo IP del client.

Ad esempio, usa la funzione empty() per controllare se $_SERVER['HTTP_CLIENT_IP'] contiene qualcosa. Se contiene, assegna il valore nella variabile $ip e stampa i.
Di nuovo, esegui un controllo su $_SERVER['HTTP_X_FORWARDED_FOR'] di conseguenza e assegna il valore e stampalo se esiste. Esegui un’operazione simile su $_SERVER['REMOTE_ADDR'].

L’esempio qui sotto, $_SERVER['REMOTE_ADDR'] restituisce l’indirizzo IP in quanto l’utente non sta usando nessun proxy o connessione internet condivisa. Controlla il Manuale PHP per saperne di più sull’array $_SERVER.

Codice di esempio:

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

Produzione:

 ::1

Utilizzare l’operatore ternario e la funzione isset() per trovare l’indirizzo IP dell’utente

Possiamo utilizzare un metodo abbreviato per trovare l’indirizzo IP dell’utente in PHP utilizzando l’operatore ternario. In questo metodo, il metodo isset() controlla se l’array contiene gli elementi specificati o i file di intestazione.

Ad esempio, usa la funzione isset() per controllare se l’array contiene HTTP_CLIENT_IP. Se la condizione è vera, viene impostato HTTP_CLIENT_IP. Quindi, se la condizione fallisce, viene usata la funzione isset() per controllare se l’array contiene HTTP_X_FORWARDED_FOR. Allo stesso modo, se la condizione è vera, viene impostato HTTP_X_FORWARDED_FOR e REMOTE_ADDR viene impostato quando la condizione fallisce.

Nell’esempio qui sotto, il client non sta usando un proxy o un internet condiviso. Pertanto, il $_SERVER['REMOTE_ADDR'] viene eseguito. Controllate il MSDN Web Docs per conoscere l’operatore ternario.

Codice di esempio:

#php 7.x
<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo "The user IP Address is - ". $ip;
?>

Produzione:

The user IP Address is - ::1
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn