Cel mai adesea, adresa IP a unui vizitator al site-ului este utilizată pentru a-l identifica. Dar, pe lângă aceasta, folosind IP, puteți obține o mulțime de informații suplimentare despre vizitator - de exemplu, aflați furnizorul său de internet și locația geografică. În practică, scripturile PHP de pe server sunt utilizate cel mai adesea pentru a extrage adrese IP din antetele de solicitare trimise de browser.
Este necesar
Cunoștințe de bază despre PHP
Instrucțiuni
Pasul 1
Utilizați funcția getenv încorporată PHP pentru a citi adresele IP din matricea variabilă de mediu superglobală. În cel mai simplu caz, va fi suficient să citiți variabila numită REMOTE_ADDR. Bucata corespunzătoare de cod PHP ar putea arăta astfel: $ userIP = getenv ('REMOTE_ADDR');
Pasul 2
În plus față de variabila REMOTE_ADDR trimisă în cerere, verificați variabilele HTTP_VIA și HTTP_X_FORWARDED_FOR. Dacă vizitatorul folosește un server proxy, atunci adresa intermediară trebuie înregistrată în ambele variabile - atât în HTTP_VIA, cât și în REMOTE_ADDR. În acest caz, puteți încerca să aflați IP-ul real al vizitatorului prin HTTP_X_FORWARDED_FOR - serverul proxy trebuie să introducă adresa originală în el. Cu toate acestea, acest lucru nu se face întotdeauna, iar utilizatorul are posibilitatea de a selecta un server proxy „opac” care nu transmite IP-ul original al vizitatorului care a trimis solicitarea. În orice caz, ar trebui să utilizați cât mai multe moduri posibile pentru a obține adresa IP originală în codul dvs. adăugând o verificare pentru variabila
Pasul 3
Concatenează într-o linie de cod PHP o verificare secvențială a trei variabile de mediu, care pot conține adresa IP originală a vizitatorului. Acest lucru se poate face, de exemplu, astfel: $ userIP = getenv ('HTTP_CLIENT_IP') SAU $ userIP = getenv ('HTTP_X_FORWARDED_FOR') SAU $ userIP = getenv ('REMOTE_ADDR');
Pasul 4
Eliminați caracterele suplimentare și alte „gunoaie” din valoarea IP rezultată care ar putea intra în variabilele de mediu. Acest lucru se poate face, de exemplu, folosind funcțiile PHP încorporate TRIM și preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
Pasul 5
Combinați tot codul într-o funcție personalizată, astfel încât să puteți face referire la el în loc să repetați liniile de verificare și curățare de mai multe ori în diferite părți ale scripturilor PHP. De exemplu, astfel: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') SAU $ userIP = getenv ('HTTP_X_FORWARDED_FOR') SAU $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}