K jeho identifikaci se nejčastěji používá IP adresa návštěvníka stránky. Kromě toho můžete pomocí protokolu IP získat spoustu dalších informací o návštěvníkovi - například zjistit jeho poskytovatele internetu a geografickou polohu. V praxi se skripty PHP na straně serveru nejčastěji používají k extrakci adres IP ze záhlaví požadavků odeslaných prohlížečem.
Je to nutné
Základní znalost PHP
Instrukce
Krok 1
Pomocí integrované funkce getenv v PHP můžete číst adresy IP z pole proměnných prostředí superglobálního prostředí. V nejjednodušším případě bude stačit přečíst proměnnou s názvem REMOTE_ADDR. Odpovídající část kódu PHP může vypadat například takto: $ userIP = getenv ('REMOTE_ADDR');
Krok 2
Kromě proměnné REMOTE_ADDR zaslané v požadavku zkontrolujte proměnné HTTP_VIA a HTTP_X_FORWARDED_FOR. Pokud návštěvník používá proxy server, pak musí být zprostředkující adresa zaznamenána v obou proměnných - v HTTP_VIA i REMOTE_ADDR. V tomto případě se můžete pokusit zjistit skutečnou IP adresu návštěvníka prostřednictvím HTTP_X_FORWARDED_FOR - proxy server do ní musí vložit původní adresu. To však není vždy provedeno a uživatel má možnost vybrat „neprůhledný“proxy server, který nepřenáší původní IP adresu návštěvníka, který požadavek odeslal. V každém případě byste měli použít co nejvíce způsobů, jak získat původní adresu IP v kódu přidáním kontroly proměnné
Krok 3
Zřetězit v jednom řádku kódu PHP postupnou kontrolu tří proměnných prostředí, které mohou obsahovat původní IP adresu návštěvníka. Lze to udělat například takto: $ userIP = getenv ('HTTP_CLIENT_IP') OR $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ userIP = getenv ('REMOTE_ADDR');
Krok 4
Odeberte z výsledné hodnoty IP další znaky a další „odpadky“, které se mohou dostat do proměnných prostředí. Toho lze dosáhnout například pomocí vestavěných funkcí PHP TRIM a preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
Krok 5
Zkombinujte veškerý kód do vlastní funkce, abyste na něj mohli místo opakování kontrolních a čistících řádků v různých částech svých skriptů PHP odkazovat. Například takto: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') NEBO $ userIP = getenv ('HTTP_X_FORWARDED_FOR') NEBO $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}