Dažniausiai jo identifikavimui naudojamas svetainės lankytojo IP adresas. Be to, naudodamiesi IP, galite gauti daug papildomos informacijos apie lankytoją - pavyzdžiui, sužinoti jo interneto tiekėją ir geografinę vietą. Praktiškai serverio pusės PHP scenarijai dažniausiai naudojami norint išgauti IP adresus iš naršyklės siunčiamų užklausų antraščių.
Tai būtina
Pagrindinės žinios apie PHP
Nurodymai
1 žingsnis
Naudokite PHP įmontuotą „getenv“funkciją, kad nuskaitytumėte IP adresus iš superglobalios aplinkos kintamųjų masyvo. Paprasčiausiu atveju pakaks perskaityti kintamąjį, pavadintą REMOTE_ADDR. Atitinkamas PHP kodo fragmentas gali atrodyti taip: $ userIP = getenv ('REMOTE_ADDR');
2 žingsnis
Be užklausoje išsiųsto kintamojo REMOTE_ADDR, patikrinkite HTTP_VIA ir HTTP_X_FORWARDED_FOR kintamuosius. Jei lankytojas naudoja tarpinį serverį, tarpinis adresas turi būti įrašytas abiejuose kintamuosiuose - ir HTTP_VIA, ir REMOTE_ADDR. Tokiu atveju galite pabandyti sužinoti tikrąjį lankytojo IP per HTTP_X_FORWARDED_FOR - tarpinis serveris turi į jį įdėti pradinį adresą. Tačiau tai daroma ne visada ir vartotojas turi galimybę pasirinkti „nepermatomą“tarpinį serverį, kuris neperduoda užklausą išsiuntusio lankytojo originalaus IP. Bet kokiu atveju turėtumėte naudoti kuo daugiau būdų, kaip gauti pirminį IP adresą savo kode, pridėdami HTTP_CLIENT_IP kintamojo žymėjimą.
3 žingsnis
Suderinkite vienoje PHP kodo eilutėje trijų aplinkos kintamųjų nuoseklų patikrinimą, kuriame gali būti originalus lankytojo IP adresas. Tai galima padaryti, pavyzdžiui, taip: $ userIP = getenv ('HTTP_CLIENT_IP') ARBA $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ARBA $ userIP = getenv ('REMOTE_ADDR');
4 žingsnis
Pašalinkite papildomus simbolius ir kitas „šiukšles“iš gautos IP vertės, kuri gali patekti į aplinkos kintamuosius. Tai galima padaryti, pavyzdžiui, naudojant įmontuotas PHP funkcijas TRIM ir preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
5 žingsnis
Sujunkite visą kodą į pasirinktinę funkciją, kad galėtumėte juo remtis, užuot pakartoję tikrinimo ir valymo eilutes įvairiose PHP scenarijų dalyse. Pvz., Taip: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') ARBA $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ARBA $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}