Ako Zistiť Ip Klienta

Obsah:

Ako Zistiť Ip Klienta
Ako Zistiť Ip Klienta

Video: Ako Zistiť Ip Klienta

Video: Ako Zistiť Ip Klienta
Video: Как узнать IP адрес роутера, чтоб зайти в его настройки? 2024, Apríl
Anonim

Podľa IP adresy návštevníka vášho webu sa o ňom dozviete pomerne veľa - krajina, mesto, meno a e-mailová adresa poskytovateľa internetu atď. Hlavná hodnota však je, že adresa IP môže slúžiť ako ID návštevníka skriptov na strane servera. Ďalej je popísané, ako môžete zistiť IP adresu pomocou PHP.

Ako zistiť IP adresu klienta
Ako zistiť IP adresu klienta

Je to nevyhnutné

Základné znalosti PHP

Inštrukcie

Krok 1

Na extrahovanie adresy IP z hlavičiek odoslaných na server s požiadavkami prehľadávača použite funkciu getenv. Číta zadané hodnoty z premenných prostredia. Premenná s názvom REMOTE_ADDR sa používa na ukladanie adresy IP návštevníka. Klient však môže použiť proxy server. V takom prípade bude premenná obsahovať svoju adresu, a nie tú, ktorú chcete. To, že webový surfer používa prechodnú IP, zistíte pri pohľade na premennú prostredia s názvom HTTP_VIA. Všetky adresy proxy serverov zapojených do reťazca sú umiestnené v ňom a sú oddelené čiarkami. Sprostredkovateľské servery musia umiestniť adresu návštevníka do premennej s názvom HTTP_X_FORWARDED_FOR, ale to úplne závisí od nastavení servera proxy. To znamená, že aby ste pokryli čo najviac možností určenia adresy IP, musíte skontrolovať obsah najmenej troch premenných: REMOTE_ADDR, HTTP_X_FORWARDED_FOR a najlepšie

Krok 2

Kontrolu všetkých troch premenných môžete kombinovať napríklad do jedného riadku kódu PHP, napríklad takto:

$ ipAddr = getenv ('HTTP_CLIENT_IP') alebo $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') alebo $ ipAddr = getenv ('REMOTE_ADDR');

Po získaní hodnoty IP adresy týmto spôsobom je vhodné ju očistiť od možných skreslení a nepotrebných znakov. Môžete na to použiť regulárny výraz:

$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));

Krok 3

Zostáva spojiť oba riadky kódu do jednej funkcie:

funkcia getIP () {

$ ipAddr = getenv ('HTTP_CLIENT_IP') alebo $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') alebo $ ipAddr = getenv ('REMOTE_ADDR');

return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));

}

Odporúča: