Avatar billede srhansen Nybegynder
27. februar 2007 - 21:04 Der er 18 kommentarer og
1 løsning

snuppe public ip på besøgende.

Hej eksperter.

Jeg roder lidt med at lave en hjemmeside på min NAS for venner og bekendte. I den anledning vil jeg gerne byde dem velkomne med navn og give dem forskellige muligheder alt efter hvem der besøger siden. Dette ønsker jeg at gøre via IP-adressen. Jeg ved godt at Ip-adressen ikke er sikker, at den kan være dynamisk og alt det der med proxy-servere, men det er mest ment som en øvelse for mig selv.

Min server er en appache- server der understøtter PHP og SSI skal derfor foregå via PHP.

Mit problem er at hver gang jeg kører noget som helst, så returnerer min kode altid den lokale ip. Den er jo 90% af gangene 192.168.1.*** , uanset hvem der besøger siden. jeg har prøvet med.

$ip = $_SERVER['REMOTE_ADDR'];  //returnerer altid lokal IP

og dette.
if (getenv("HTTP_CLIENT_IP")) $forwardet = getenv "HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR")) $forwardet = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR")) $forwardet = getenv("REMOTE_ADDR");
else $forwardet = "UNKNOWN";

Samme sag kun lokal ip.

Jeg har haft held med at tvinge den frem med dette, som jeg har snuppet.
$ippublic = gethostbyname("knud.borge-iii.udeip.net");
$output = $ippublic;
$myfile = "e:\\ralf\\kette\\protected\\ipop.txt";
if($file=fopen($myfile, "w"))
{
$gh= fwrite($file, $output);
}
Avatar billede srhansen Nybegynder
27. februar 2007 - 21:09 #1
Æv, kom til at sende. Kan man ikke redigere?
Nå men ovenstående tvinger ip-adressen frem fordi at hosten er ukendt. Desvære kan jeg ikke gemme resultatet i en variabel, som jeg har forsøgt fordi jeg benytter fwrite. Er der ingen der kan komme med en løsning php eller script der giver mig den offentlige ip-adresse?
Avatar billede jakobdo Ekspert
27. februar 2007 - 21:10 #2
Public ip på en besøgende kan fåes via: $ip = $_SERVER['REMOTE_ADDR'];
Prøv f.eks. at gå ind på siden: http://www.codebreaker.dk/exp/765170exp.php

Jeg har aldrig set et script som rent faktisk giver andre værdier via: HTTP_X_FORWARDED_FOR

Er der nogen som kan fortælle om den virker?
Avatar billede srhansen Nybegynder
27. februar 2007 - 21:15 #3
Hej jakobdo

Jeg har jo forsøgt med $ip = $_SERVER['REMOTE_ADDR'];, men den returnerer altid lokal ip og jeg har forsøgt på flere computere hostet af forskellige isp
Avatar billede jakobdo Ekspert
27. februar 2007 - 21:25 #4
Men prøv at åben min side?
Der er kun følgende kode:

<?php
//http://www.eksperten.dk/spm/765170

echo 'Din IP er: ' . $_SERVER['REMOTE_ADDR'];

?>

Og der får du vel ikke en lokal ip?
Har du en side på din server, hvor jeg evt. kan åbne den?

Du kan jo evt. prøve at lave en side, hvor du kun har følgende kode:

<?php
//http://www.eksperten.dk/spm/765170

echo 'Din IP er: ' . $_SERVER['REMOTE_ADDR'];

?>
Avatar billede srhansen Nybegynder
27. februar 2007 - 21:55 #5
Hej igen.
Prøv http://87.50.106.209/
den indeholder først
$ip = $_SERVER['REMOTE_ADDR'];
Derefter koden med HTTP_X_FORWARDED_FOR
Avatar billede jakobdo Ekspert
27. februar 2007 - 21:59 #6
Jeg får følgende info:

Server returnerede IP-adresse er:
89.236.10.XXX
Forwardede IP-adresse er:
89.236.10.XXX

Så det er rigtigt nok! (jeg har lige skrevet XXX for at sløre min ip) :o)
Avatar billede srhansen Nybegynder
27. februar 2007 - 22:04 #7
hmm. spooky. Det må være noget der foregår på client siden, enten i router eller ved udbyder.
Avatar billede srhansen Nybegynder
27. februar 2007 - 22:08 #8
Jeg har lige prøvet med annonym proxy http://anonymouse.org

Server returnerede IP-adresse er:
85.195.123.22
Forwardede IP-adresse er:
85.195.123.22
hvad dælen kan være galt
Avatar billede jakobdo Ekspert
27. februar 2007 - 22:09 #9
Men dine venner burde også få en public ip, og ikke bare 192.168.XXX.XXX
Er du sikker på det er tilfældet?
Prøv at lad dine venner åbne den side jeg også åbnede, og se om ikke den giver korrekt ip.
Det er nemlig den rigtige måde at gøre det på.
Avatar billede jakobdo Ekspert
27. februar 2007 - 22:16 #10
Det jeg måske kan tro der sker, er din gethostbyname().
Det kan være din server forsøger med noget lokalt opslag og derfor giver en lokal ip tilbage.
Avatar billede srhansen Nybegynder
27. februar 2007 - 22:20 #11
Jeg prøvede selv fra mit arbejde og der returnerede den den lokale ip. Desuden har min lillebror og en kammerat prøvet med samme resultat. Siden du prøvede er den samme som vi prøvede minus en masse CSS. Den er blot renamet til index.php og så er css, klippet bort. Den 3 stump kode jeg indledte med er "sakset" fra en ligesindet på nettet og den viser korrekt ip, selvom det er lidt en omvej.
Avatar billede srhansen Nybegynder
27. februar 2007 - 22:22 #12
Ja det med lokalt opslag tænkte jeg også på, men når den ved 3 forskellige isp'er på 3 uafhængige net, viser den lokale ip, så tror jeg det er noget andet
Avatar billede jakobdo Ekspert
27. februar 2007 - 22:28 #13
Nej, jeg tror nemlig det er denne stump kode som har gjort det: $ippublic = gethostbyname();

Prøv at test det kode du har nu med venner og bekendte, det skal virke.
Avatar billede srhansen Nybegynder
27. februar 2007 - 22:44 #14
Jeg har logget de sidste 108 adresser i en SQLite database alle som en viser den lokale ip-adresse så jeg tror jeg er tvunget til at bruge gethostbyname(); Her er iøvrigt et link til de ligesindede: http://www.apachefriends.org/f/viewtopic.php?t=1046&sid=e15a3a9d375b230ae5d8d396ae236be4
Avatar billede jakobdo Ekspert
28. februar 2007 - 08:11 #15
Jeg synes nu stadig du skal prøve at teste lidt på følgende kode:

echo 'Din IP er: ' . $_SERVER['REMOTE_ADDR'];
Avatar billede srhansen Nybegynder
28. februar 2007 - 12:40 #16
Hej jakobdo.

Jeg må med skam, bekende at du har helt ret. Blandt de loggede data var adresserne 198.xxx.xxx.xxx, jeg troede fejlagtigt at det var interne netadresser fordi de lå så tæt på 192.168.xxx.xxx, som typisk bruges. Jeg har nu fra mit arbejde koblet op mod en af de bedre sider og den viser med alt tydelighed at Ip adressen faktisk er 198.xxx.xxx.xxx. Så fejlen ligger altså helt hos mig selv. At jeg får adressen på indersiden fra min egen PC inden for netværket, må skyldes lokat opslag. Læg et
svar og du skal få dine velfortjente point.

Tak for hjælpen.
Mvh SRHansen
Avatar billede jakobdo Ekspert
28. februar 2007 - 13:25 #17
Det var godt du fandt en løsning.
Du får et svar her! :o)
Avatar billede srhansen Nybegynder
28. februar 2007 - 18:18 #18
Tak for hjælpen jakobdo
Avatar billede jakobdo Ekspert
28. februar 2007 - 19:01 #19
Jeg takker for point. :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester