

Rôzne druhy IP v PHP
Viete mi prosím vysvetliť, kedy ktorý parameter obsahuje IP a aká IP to je? Potešil by aj nejaký príklad.
$IP1 = getenv('HTTP_CLIENT_IP');
$IP2 = getenv('HTTP_X_FORWARDED_FOR');
$IP3 = getenv('HTTP_X_FORWARDED');
$IP4 = getenv('HTTP_FORWARDED_FOR');
$IP5 = getenv('HTTP_FORWARDED');
$IP6 = $_SERVER['REMOTE_ADDR'];
$_SERVER['REMOTE_ADDR'] je IP adresa, z ktorej došla požiadavka.
Ostatné sú z hlavičky HTTP požiadavky, takže ich klient môže jednoducho podvrhnúť. Pridávajú ich proxy servery a dávajú do nich IP adresu, odkiaľ prišla požiadavka na ten proxy server.
Ten kto chce IP podvrhnúť, tak vie podvrhnúť aj "hlavnú" IP. Mne ide o to, že väčšina používateľov podvrhovať nebude a mnoho používateľov ani nevie, že mnohé stránky logujú všetko. Takže malý prehľad o IP neuškodí.
Teraz sa vrátim k otázke. Vieš mi povedať, kedy, ktorý údaj bude obsahovať hodnotu? Ide o to, že ktoré sú pre mňa "podstatné" a ktoré nie.
Vždyť ti los odpověděl. REMOTE_ADDR bude vždycky obsahovat adresu počítače, routeru nebo proxy, ze kterého přišel požadavek. Proxy někdy přidávají do hlavičky i to, odkud přišel požadavek na proxy samotnou.
Když si zadáš HTTP_CLIENT_IP do google, na prvním odkazu máš zkušenosti v zprasené angličtině:
Záleží tedy na proxy, co ti pošle, a jestli vůbec něco.
Čiže je úplne jedno, v ktorom parametri ($IP1 - $IP5) to bude? Vždy to bude len v jedinom?
Význam $IP6 viem, zaujímam sa hlavne o tie ostatné, lebo poriadnu dokumentáciu k nim som na Internete nenašiel.
Čiže môže byť nastavená hociktorá hodnota nezávisle na iných hodnotách. V HTTP hlavičke je napr. Forwarded, to sa dá do $_SERVER["HTTP_FORWARDED"]. Niekto iný môže nastaviť hlavičku X-Forwarded, ku ktorej sa potom dostaneš cez $_SERVER["HTTP_X_FORWARDED"].
Napr. ak by šla požiadavka cez 2 proxy, tak jedna môže nastaviť jednu hlavičku a druhá druhú. Iné proxy môžu ukladať informáciu o IP napr. aj do hlavičky s úplne iným menom.