Kaip Sužinoti Kliento Ip

Turinys:

Kaip Sužinoti Kliento Ip
Kaip Sužinoti Kliento Ip

Video: Kaip Sužinoti Kliento Ip

Video: Kaip Sužinoti Kliento Ip
Video: TCP/IP: что это и зачем нужно 2024, Gegužė
Anonim

Pagal savo svetainės lankytojo IP adresą apie jį galite sužinoti gana daug - šalį, miestą, interneto tiekėjo vardą ir el. Pašto adresą ir kt. Tačiau pagrindinė vertė yra ta, kad IP gali būti serverio scenarijų lankytojo ID. Žemiau aprašyta, kaip galite nustatyti IP adresą naudodami PHP.

Kaip sužinoti kliento ip
Kaip sužinoti kliento ip

Tai būtina

Pagrindinės žinios apie PHP

Nurodymai

1 žingsnis

Norėdami išgauti IP adresą iš antraščių, siunčiamų į naršyklės užklausų serverį, naudokite funkciją getenv. Jis nuskaito jai nurodytas vertes iš aplinkos kintamųjų. Kintamasis, pavadintas REMOTE_ADDR, naudojamas lankytojo IP adresui saugoti. Tačiau klientas gali naudoti tarpinį serverį, tokiu atveju kintamajame bus jo adresas, o ne norimas. Galite sužinoti, kad interneto banglentininkas naudoja tarpinį IP, žiūrėdamas į aplinkos kintamąjį, vadinamą HTTP_VIA. Visi grandinėje dalyvaujančių tarpinių serverių adresai dedami į ją, atskirti kableliais. Tarpiniai serveriai turi įdėti lankytojo adresą į kintamąjį, pavadintą HTTP_X_FORWARDED_FOR, tačiau tai visiškai priklauso nuo tarpinio serverio nustatymų. Tai reiškia, kad norint aprėpti kuo daugiau galimybių nustatyti IP adresą, turite patikrinti bent trijų kintamųjų turinį: REMOTE_ADDR, HTTP_X_FORWARDED_FOR ir pageidautina

2 žingsnis

Pavyzdžiui, galite sujungti visų trijų kintamųjų tikrinimą į vieną PHP kodo eilutę:

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

Tokiu būdu gavus IP adreso vertę, patartina ją išvalyti nuo galimų iškraipymų ir nereikalingų simbolių. Tam galite naudoti įprastą išraišką:

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

3 žingsnis

Belieka sujungti abi kodo eilutes į vieną funkciją:

funkcija getIP () {

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

grįžti apdaila (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));

}

Rekomenduojamas: