Come Scoprire L'ip Del Cliente?

Come Scoprire L'ip Del Cliente?
Come Scoprire L'ip Del Cliente?
Anonim

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.

Come scoprire l'ip del cliente?
Come scoprire l'ip del cliente?

È 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));

}

Consigliato: