Najčastejšie sa na jeho identifikáciu používa IP adresa návštevníka stránky. Okrem toho však pomocou protokolu IP môžete získať veľa ďalších informácií o návštevníkovi - napríklad zistiť jeho poskytovateľa internetu a geografické umiestnenie. V praxi sa na extrahovanie adries IP z hlavičiek požiadaviek odosielaných prehliadačom najčastejšie používajú skripty PHP na strane servera.
Je to nevyhnutné
Základné znalosti PHP
Inštrukcie
Krok 1
Na načítanie adries IP z poľa premenných superglobálneho prostredia použite vstavanú funkciu getenv PHP. V najjednoduchšom prípade bude stačiť prečítať premennú s názvom REMOTE_ADDR. Zodpovedajúca časť kódu PHP môže vyzerať takto: $ userIP = getenv ('REMOTE_ADDR');
Krok 2
Okrem premennej REMOTE_ADDR zaslanej v žiadosti skontrolujte premenné HTTP_VIA a HTTP_X_FORWARDED_FOR. Pokiaľ návštevník používa proxy server, musí byť sprostredkujúca adresa zaznamenaná v oboch premenných - v HTTP_VIA aj REMOTE_ADDR. V takom prípade sa môžete pokúsiť zistiť skutočnú IP adresu návštevníka cez HTTP_X_FORWARDED_FOR - proxy server do nej musí vložiť pôvodnú adresu. Nie vždy sa to však deje, a používateľ má možnosť zvoliť si „nepriehľadný“server proxy, ktorý neprenáša pôvodnú adresu IP návštevníka, ktorý žiadosť odoslal. V každom prípade by ste mali použiť čo najviac spôsobov, ako získať pôvodnú adresu IP v kóde, a to pridaním kontroly premennej
Krok 3
Spojte do jedného riadku kódu PHP postupnú kontrolu troch premenných prostredia, ktoré môžu obsahovať pôvodnú IP adresu návštevníka. Môžete to urobiť napríklad takto: $ userIP = getenv ('HTTP_CLIENT_IP') OR $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ userIP = getenv ('REMOTE_ADDR');
Krok 4
Z výslednej hodnoty adresy IP, ktorá sa môže dostať do premenných prostredia, odstráňte nadbytočné znaky a ďalší „odpad“. To je možné urobiť napríklad pomocou zabudovaných funkcií PHP TRIM a preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
Krok 5
Spojte všetok kód do vlastnej funkcie, aby ste na ňu mohli odkazovať namiesto opakovania kontrolných a čistiacich riadkov znova a znova v rôznych častiach vašich skriptov PHP. Napríklad takto: FUNKCIA getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') ALEBO $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ALEBO $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}