Najčešće se za njegovu identifikaciju koristi IP adresa posjetitelja stranice. Ali osim toga, koristeći IP, možete dobiti puno dodatnih informacija o posjetitelju - na primjer, saznati njegovog dobavljača Interneta i geografsku lokaciju. U praksi se PHP skripte na strani servera najčešće koriste za izdvajanje IP adresa iz zaglavlja zahtjeva koje šalje pregledač.
Neophodno je
Osnovno znanje PHP-a
Instrukcije
Korak 1
Koristite PHP-ovu ugrađenu getenv funkciju za čitanje IP adresa iz niza varijabli superglobalnog okruženja. U najjednostavnijem slučaju, bit će dovoljno pročitati varijablu pod nazivom REMOTE_ADDR. Odgovarajući dio PHP koda mogao bi izgledati ovako: $ userIP = getenv ('REMOTE_ADDR');
Korak 2
Pored varijable REMOTE_ADDR poslane u zahtjevu, provjerite i varijable HTTP_VIA i HTTP_X_FORWARDED_FOR. Ako posjetitelj koristi proxy server, tada se posredna adresa mora zabilježiti u obje varijable - i u HTTP_VIA i u REMOTE_ADDR. U ovom slučaju možete pokušati saznati stvarni IP posjetitelja putem HTTP_X_FORWARDED_FOR - proxy server mora u njega staviti originalnu adresu. Međutim, to se ne radi uvijek, a korisnik ima priliku odabrati "neprozirni" proxy server koji ne prenosi originalnu IP adresu posjetitelja koji je poslao zahtjev. U svakom slučaju, trebali biste koristiti što više načina za dobivanje originalne IP adrese u kodu dodavanjem provjere za varijablu
Korak 3
Spojite u jedan red PHP koda sekvencijalnu provjeru tri varijable okoline, koje mogu sadržavati originalnu IP adresu posjetitelja. To se može učiniti, na primjer, ovako: $ userIP = getenv ('HTTP_CLIENT_IP') ILI $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ILI $ userIP = getenv ('REMOTE_ADDR');
Korak 4
Uklonite dodatne znakove i ostalo "smeće" iz rezultirajuće IP vrijednosti koja može ući u varijable okoline. To se može učiniti, na primjer, pomoću ugrađenih PHP funkcija TRIM i preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
Korak 5
Kombinirajte sav kôd u prilagođenu funkciju tako da se možete pozivati na njega, umjesto da ponavljate redove provjere i čišćenja u različitim dijelovima PHP skripti. Na primjer, ovako: FUNKCIJA getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') ILI $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ILI $ userIP = getenv ('REMOTE_ADDR');
VRATITI OBREZ (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}