Hur gör man för att få fram ip:et när inte $_ENV['HTTP_X_FORWARDED_FOR'] eller $_ENV['REMOTE_ADDR'] vill fungera...
Om jag går in i access.log för apache så visas ju IP på besökaren där...men den vill ju inte visa det på mina sidor...
Ip
8 svar · 389 visningar · startad av Picklezz
Vafan...får det att fungera om jag kör det som en CGI-modul och inte SAPI-modul...
men nu fattar jag inget alls för när min kompis som har telia adsl går in på sidan så blir $_ENV['HTTP_X_FORWARDED_FOR']ett hans ip, $_ENV['REMOTE_ADDR'] ) blir nått annat som är kopplat till telia...
är det så på alla telia användare?
REMOTE_ADDR sätts av webclienten/browsern.
HTTP_X_FORWARDED_FOR sätts av proxy-servrar (oftast Squid)
Proxy servrar kan gå in och ändra dessa variabler, även fast jag inte sett någon som gör så.
Gå inpå den här sidan: Info om dig vad du lämnar.
(det är en php-sida som sapi på en Unix maskin)
hur kommer det sig att jag får sånna värden då?
För på min kompis med ip: 217.208.104.200
så får jag
HTTP_X_FORWARDED_FOR = 217.208.104.200
REMOTE_ADDR = 213.65.240.243
Båda är ju Telia IP:en...men jag fattar inte varför REMOTE_ADDR inte blir personens IP???
Jag använder Telia och jag får
HTTP_X_FORWARDED_FOR = (inget)
REMOTE_ADDR = 213.65.246.108 (min ip)
HTTP_X_FORWARDED_FOR = 217.208.104.200
REMOTE_ADDR = 213.65.240.243
I detta fallet är HTTP_X_FORWARDED_FOR ip-adressen på den som utnyttjar proxyn (klienten/surfaren) och REMOTE_ADDR är proxyns adress. Utåt sett syns endast proxy-servern eftersom det är den som hämtar informationen.
Vissas inget på HTTP_X_FORWARDED_FOR så går man inte via en proxy (telias) och då är REMOTE_ADDR klientens ip-adress.
hur gör man om man ska göra ett script som tar reda på besökarens ip då?
Snabbt skrivet, finns säker bättre sätt :)
if ($HTTP_X_FORWARDED_FOR=="") {
$IP=$REMOTE_ADDR;
} else {
$IP=$HTTP_X_FORWARDED_FOR;
}
$ip = getenv("REMOTE_ADDR");