Ratkaistu: vain minun ip

Viimeisin päivitys: 09/19/2023
Kirjoittaja: PHP Sourcetrail

Toki ymmärsin vaatimukset. Tältä artikkelisi "PHP- ja IP-osoitteiden käsittelystä" voisi näyttää:

IP-osoitteiden kanssa työskentely web-kehityksen maailmassa on yleistä, erityisesti käyttäjien seurannassa, IP-pohjaisen todennuksen määrittämisessä ja paljon muussa. Kehittäjä tietää, että asiakkaan IP-osoitteen voi hakea useilla tavoilla, mutta välityspalvelimen takana kehittämiseen liittyy joitakin monimutkaisuuksia, koska se saattaa palauttaa palvelimen IP-osoitteen asiakkaan IP-osoitteen sijaan. Tässä kohtaa PHP:n teho astuu esiin, sillä se tarjoaa sisäänrakennettuja ominaisuuksia tällaisten tilanteiden tehokkaaseen käsittelyyn.

IP-osoitteiden ja PHP:n ymmärtäminen

Internet-protokollaosoite (tai IP-osoite) on yksilöivä pisteillä erotettu numerosarja, joka tunnistaa jokaisen internet-protokollaa käyttävän tietokoneen verkossa kommunikointiin. PHP:ssä $_SERVER on superglobaali muuttuja, joka sisältää tietoja otsikoista, komentosarjojen sijainnista ja poluista. Järjestelmän IP-osoitteen hakemiseen voit käyttää suoraan $_SERVER['REMOTE_ADDR'] -muuttujaa, mutta se ei aina anna odotettua tulosta, erityisesti tapauksissa, joissa asiakas on välityspalvelimen takana.

Ratkaisu: Tarkka IP-osoitteen tunnistus PHP:ssä

Saadaksemme asiakkaan tarkan IP-osoitteen, jopa välityspalvelimen takana, voimme käyttää HTTP_CLIENT_IP- ja HTTP_X_FORWARDED_FOR-otsikoita, jotka sisältävät asiakkaan alkuperäisen IP-osoitteen. Meidän on ensin tarkistettava nämä otsikot varmistaaksemme, ettei pahantahtoinen käyttäjä väärennä IP-osoitetta.

Tässä on vaiheittainen erittely PHP-koodiratkaisusta.

<?php
function getUserIP(){
    if(!empty($_SERVER&#91;'HTTP_CLIENT_IP'&#93;)){
        // IP address from shared Internet
        $ip = $_SERVER&#91;'HTTP_CLIENT_IP'&#93;;
    }elseif(!empty($_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;)){
        // IP address from proxy server
        $ip = $_SERVER&#91;'HTTP_X_FORWARDED_FOR'&#93;;
    }else{
        // IP address from remote address
        $ip = $_SERVER&#91;'REMOTE_ADDR'&#93;;
    }
    return $ip;
}
$userIP = getUserIP();
echo "User's IP: " . $userIP;
?>

PHP-koodin selitys

PHP:n getUserIp-funktio pyrkii saamaan asiakkaan IP-osoitteen tarkistamalla ensin HTTP_CLIENT_IP-otsakkeen. Tämä sisältää usein asiakkaan alkuperäisen IP-osoitteen, kun käytetään jaettua internet-palvelua. Jos tämä otsikko on tyhjä, funktio tarkistaa HTTP_X_FORWARDED_FOR-otsakkeen, joka voi myös sisältää välityspalvelimen lähettämän asiakkaan alkuperäisen IP-osoitteen.

  • Jos molemmat otsikot ovat tyhjiä, se palaa kohtaan $_SERVER['REMOTE_ADDR'], joka palauttaa palvelimen IP-osoitteen.
  • IP-osoitteen saamisen jälkeen koodi tulostaa sen kaikulausekkeella.

Tämä menetelmä on yksi luotettavimmista tavoista saada käyttäjän IP-osoite PHP:ssä. Muista kuitenkin ryhtyä varotoimiin suojautuaksesi IP-huijaukselta. Puhdista tai vahvista IP-osoitteet aina osana suojausprotokollaasi.

Related viestiä: