Najčešće se za njegovu identifikaciju koristi IP adresa posjetitelja stranice. No osim toga, pomoću IP-a možete dobiti puno dodatnih podataka o posjetitelju - na primjer, saznati njegovog davatelja internetskih usluga i zemljopisni položaj. U praksi se PHP skripte na poslužitelju najčešće koriste za izdvajanje IP adresa iz zaglavlja zahtjeva koje šalje preglednik.
Nužno je
Osnovno znanje PHP-a
Upute
Korak 1
Koristite ugrađenu PHP-ovu funkciju getenv za čitanje IP adresa iz polja 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
Uz varijablu REMOTE_ADDR poslanu u zahtjevu, provjerite i varijable HTTP_VIA i HTTP_X_FORWARDED_FOR. Ako posjetitelj koristi proxy poslužitelj, 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 poslužitelj mora u njega staviti izvornu adresu. Međutim, to se ne radi uvijek, a korisnik ima priliku odabrati "neprozirni" proxy poslužitelj koji ne prenosi izvorni IP posjetitelja koji je poslao zahtjev. U svakom slučaju, trebali biste koristiti što više načina za dobivanje izvorne IP adrese u kodu dodavanjem provjere za varijablu
3. korak
Spojite u jedan redak PHP koda sekvencijalnu provjeru tri varijable okoline, koje mogu sadržavati izvornu 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');
4. korak
Uklonite suvišne 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 kod u prilagođenu funkciju tako da se na njega možete pozvati, 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));
}