Pomoću IP adrese posjetitelja vašeg web mjesta možete saznati prilično puno o njemu - zemlju, grad, ime i e-adresu davatelja internetske usluge itd. Ali glavna je vrijednost da IP može poslužiti kao ID posjetitelja za skripte na strani poslužitelja. Ispod je opisano kako možete odrediti IP adresu pomoću PHP-a.
Nužno je
Osnovno znanje PHP-a
Upute
Korak 1
Da biste izvukli IP adresu iz zaglavlja poslanih poslužitelju zahtjeva preglednika, upotrijebite funkciju getenv. Čita vrijednosti navedene u njemu iz varijabli okoline. Varijabla pod nazivom REMOTE_ADDR koristi se za pohranu IP adrese posjetitelja. Međutim, klijent može koristiti proxy poslužitelj, u kojem će slučaju varijabla sadržavati svoju adresu, a ne onu koju želite. Možete saznati da web surfer koristi srednju IP adresu promatrajući varijablu okruženja nazvanu HTTP_VIA. Sve adrese proxy poslužitelja uključenih u lanac stavljaju se u njega, odvojene zarezima. Posrednički poslužitelji moraju adresu posjetitelja smjestiti u varijablu koja se naziva HTTP_X_FORWARDED_FOR, ali to u potpunosti ovisi o postavkama proxyja. To znači da da biste pokrili što više mogućnosti određivanja IP adrese, morate provjeriti sadržaj najmanje tri varijable: REMOTE_ADDR, HTTP_X_FORWARDED_FOR i po mogućnosti
Korak 2
Provjeru sve tri varijable možete kombinirati u jedan redak PHP koda, na primjer, ovako:
$ ipAddr = getenv ('HTTP_CLIENT_IP') ili $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') ili $ ipAddr = getenv ('REMOTE_ADDR');
Dobivši vrijednost IP adrese na ovaj način, preporučljivo ju je očistiti od mogućih izobličenja i nepotrebnih znakova. Za to možete upotrijebiti regularni izraz:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
3. korak
Preostaje kombinirati oba retka koda u jednu funkciju:
funkcija getIP () {
$ ipAddr = getenv ('HTTP_CLIENT_IP') ili $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') ili $ ipAddr = getenv ('REMOTE_ADDR');
vrati trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}