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['HTTP_CLIENT_IP'])){
// IP address from shared Internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
// IP address from proxy server
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
// IP address from remote address
$ip = $_SERVER['REMOTE_ADDR'];
}
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.