Najpogosteje se za njegovo identifikacijo uporablja naslov IP obiskovalca spletnega mesta. Poleg tega pa lahko z uporabo IP-ja dobite še veliko dodatnih informacij o obiskovalcu - na primer ugotovite njegovega ponudnika interneta in geografsko lokacijo. V praksi se za pridobivanje naslovov IP iz naslovov zahtev, ki jih pošlje brskalnik, najpogosteje uporabljajo PHP skripti na strežniški strani.
Potrebno je
Osnovno znanje PHP
Navodila
Korak 1
Za branje naslovov IP iz matrike spremenljivk okolja superglobal uporabite PHP-jevo vgrajeno funkcijo getenv. V najpreprostejšem primeru bo dovolj, da preberemo spremenljivko z imenom REMOTE_ADDR. Ustrezni del kode PHP je lahko videti tako: $ userIP = getenv ('REMOTE_ADDR');
2. korak
Poleg spremenljivke REMOTE_ADDR, poslane v zahtevi, preverite še spremenljivki HTTP_VIA in HTTP_X_FORWARDED_FOR. Če obiskovalec uporablja strežnik proxy, mora biti vmesni naslov zapisan v obe spremenljivki - v HTTP_VIA in REMOTE_ADDR. V tem primeru lahko poskusite ugotoviti dejanski IP obiskovalca prek HTTP_X_FORWARDED_FOR - proxy strežnik mora vanj vnesti izvirni naslov. Vendar se to ne naredi vedno in uporabnik ima možnost, da izbere "neprozoren" strežnik proxy, ki ne pošlje prvotnega IP-ja obiskovalca, ki je poslal zahtevo. V vsakem primeru uporabite čim več načinov za pridobitev prvotnega naslova IP v svoji kodi tako, da dodate preverjanje spremenljivke
3. korak
V eno vrstico kode PHP združite zaporedno preverjanje treh spremenljivk okolja, ki lahko vsebujejo izvirni naslov IP obiskovalca. To lahko storite na primer tako: $ userIP = getenv ('HTTP_CLIENT_IP') ALI $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ALI $ userIP = getenv ('REMOTE_ADDR');
4. korak
Iz nastale vrednosti IP odstranite odvečne znake in druge "smeti", ki lahko pridejo v spremenljivke okolja. To lahko na primer naredite z uporabo vgrajenih funkcij PHP TRIM in preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
5. korak
Vso kodo združite v funkcijo po meri, tako da se lahko sklicujete nanjo, namesto da bi v različnih delih skriptov PHP ponavljali vrstice za preverjanje in čiščenje znova in znova. Na primer, takole: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') ALI $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ALI $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}