Prin adresa IP a unui vizitator al site-ului dvs., puteți afla destul de multe despre el - țară, oraș, nume și adresa de e-mail a furnizorului de internet etc. Dar principala valoare este că IP-ul poate servi drept ID de vizitator pentru scripturile de pe server. Mai jos este descris modul în care puteți determina adresa IP folosind PHP.
Este necesar
Cunoștințe de bază despre PHP
Instrucțiuni
Pasul 1
Pentru a extrage adresa IP din antetele trimise către serverul de solicitare al browserului, utilizați funcția getenv. Citește valorile specificate din variabilele de mediu. O variabilă numită REMOTE_ADDR este utilizată pentru a stoca adresa IP a vizitatorului. Cu toate acestea, clientul poate utiliza un server proxy, caz în care variabila va conține adresa sa, și nu cea pe care o doriți. Puteți afla că surferul web folosește un IP intermediar uitându-se la variabila de mediu numită HTTP_VIA. Toate adresele serverelor proxy implicate în lanț sunt plasate în acesta, separate prin virgule. Serverele intermediare trebuie să plaseze adresa vizitatorului într-o variabilă numită HTTP_X_FORWARDED_FOR, dar aceasta depinde în totalitate de setările proxy-ului. Aceasta înseamnă că, pentru a acoperi cât mai multe posibilități de determinare a adresei IP, este necesar să verificați conținutul a cel puțin trei variabile: REMOTE_ADDR, HTTP_X_FORWARDED_FOR și, de preferință,
Pasul 2
Puteți combina verificarea tuturor celor trei variabile într-o singură linie de cod PHP, de exemplu, astfel:
$ ipAddr = getenv ('HTTP_CLIENT_IP') sau $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') sau $ ipAddr = getenv ('REMOTE_ADDR');
După ce ați obținut valoarea adresei IP în acest mod, este recomandabil să o eliminați de posibile distorsiuni și caractere inutile. Puteți utiliza o expresie regulată pentru aceasta:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Pasul 3
Rămâne să combinați ambele linii de cod într-o singură funcție:
funcția getIP () {
$ ipAddr = getenv ('HTTP_CLIENT_IP') sau $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') sau $ ipAddr = getenv ('REMOTE_ADDR');
return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}