Con l'indirizzo IP di un visitatore del tuo sito, puoi scoprire molto su di lui: paese, città, nome e indirizzo e-mail del provider Internet, ecc. Ma il valore principale è che l'IP può fungere da ID visitatore per gli script lato server. Di seguito viene descritto come è possibile determinare l'indirizzo IP utilizzando PHP.
È necessario
Conoscenza di base di PHP
Istruzioni
Passo 1
Per estrarre l'indirizzo IP dalle intestazioni inviate al server di richiesta del browser, utilizzare la funzione getenv. Legge i valori ad esso specificati dalle variabili d'ambiente. Una variabile denominata REMOTE_ADDR viene utilizzata per memorizzare l'indirizzo IP del visitatore. Tuttavia, il client può utilizzare un server proxy, nel qual caso la variabile conterrà il suo indirizzo e non quello desiderato. Puoi scoprire che il navigatore web sta usando un IP intermedio guardando la variabile d'ambiente chiamata HTTP_VIA. In essa vengono inseriti tutti gli indirizzi dei server proxy coinvolti nella catena, separati da virgole. I server intermedi devono inserire l'indirizzo del visitatore in una variabile denominata HTTP_X_FORWARDED_FOR, ma questo dipende interamente dalle impostazioni del proxy. Ciò significa che per coprire il maggior numero possibile di possibilità di determinazione dell'indirizzo IP, è necessario verificare il contenuto di almeno tre variabili: REMOTE_ADDR, HTTP_X_FORWARDED_FOR e preferibilmente
Passo 2
Puoi combinare il controllo di tutte e tre le variabili in una riga di codice PHP, ad esempio, in questo modo:
$ ipAddr = getenv ('HTTP_CLIENT_IP') o $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') o $ ipAddr = getenv ('REMOTE_ADDR');
Ottenuto in questo modo il valore dell'indirizzo IP, è consigliabile ripulirlo da possibili distorsioni e caratteri non necessari. Puoi usare un'espressione regolare per questo:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Passaggio 3
Resta da combinare entrambe le righe di codice in un'unica funzione:
funzione getIP() {
$ ipAddr = getenv ('HTTP_CLIENT_IP') o $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') o $ ipAddr = getenv ('REMOTE_ADDR');
return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}