/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
klients IP adresse
Fra : Søren


Dato : 15-12-03 14:35

Jeg har været inde på php.net for at finde ud af, hvordan jeg kan få en
klients IP adresse uden held. På en hjemmeside vil jeg gerne kunne
opfange IP adressen på den, der besøger siden, men hvordan gøres det med
php?

I forlængelse af dette vil jeg gerne finde ud af, om jeg kan bruge det
samme kode i wml, hvor jeg tilsvarende kan se hvilket mobil telefon
nummer, der ringer op (i forb. med WAP).

På forhånd tak.

Søren


 
 
Dan Molberg (15-12-2003)
Kommentar
Fra : Dan Molberg


Dato : 15-12-03 14:48

Søren wrote:
> Jeg har været inde på php.net for at finde ud af, hvordan jeg kan få
> en klients IP adresse uden held. På en hjemmeside vil jeg gerne kunne
> opfange IP adressen på den, der besøger siden, men hvordan gøres det
> med php?
$IP = $_SERVER['REMOTE_ADDR'];
$FIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP;
$IP = explode(",", $IP);
$IP = $IP[0];

> I forlængelse af dette vil jeg gerne finde ud af, om jeg kan bruge det
> samme kode i wml, hvor jeg tilsvarende kan se hvilket mobil telefon
> nummer, der ringer op (i forb. med WAP).
Kan du ikke.

--
MVH Dan Molberg
http://beyond.repair.dk/



Søren (15-12-2003)
Kommentar
Fra : Søren


Dato : 15-12-03 18:36

Dan Molberg wrote:

> $IP = $_SERVER['REMOTE_ADDR'];
> $FIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
> if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP;
> $IP = explode(",", $IP);
> $IP = $IP[0];

Hvis jeg lige vil vise det med tekst - fx 'Din IP adresse er:
xxx.xxx.x.x' - hvordan gør jeg det?

Søren


Leonard (15-12-2003)
Kommentar
Fra : Leonard


Dato : 15-12-03 18:42

Søren <sorenh@gmx.net> wrote:

>Hvis jeg lige vil vise det med tekst - fx 'Din IP adresse er:
>xxx.xxx.x.x' - hvordan gør jeg det?

<p>Din IP adresse er: <?=$_SERVER['REMOTE_ADDR'];?></p>

--
mvh Leonard http://leonard.dk/
Det er en muldvarp på motorcykel!
Hvad er det, der er småt, sort og meget hurtigt?
http://usenet.dk/netikette/citatteknik.html

Leonard (15-12-2003)
Kommentar
Fra : Leonard


Dato : 15-12-03 18:44

"Dan Molberg" <beyond@repair.void> wrote:

>$IP = $_SERVER['REMOTE_ADDR'];
>$FIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
>if (($FIP != "") && ($FIP != "unknown")) $IP = $FIP;

Hvad er formålet med den lange udredning?

>$IP = explode(",", $IP);
>$IP = $IP[0];

Får du ikke her splittet IP-adressen op og kun vist de første 3 cifre?

--
mvh Leonard http://leonard.dk/
Det er en muldvarp på motorcykel!
Hvad er det, der er småt, sort og meget hurtigt?
http://usenet.dk/netikette/citatteknik.html

Peter Brodersen (15-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 15-12-03 20:48

On Mon, 15 Dec 2003 18:44:28 +0100, Leonard <nospam@invalid.invalid>
wrote:

>>$IP = explode(",", $IP);
>>$IP = $IP[0];
>Får du ikke her splittet IP-adressen op og kun vist de første 3 cifre?

Nej, det er komme, der splittes på, og ikke punktum.

Dan sørger for at hvis IP-adressen bliver leveret af proxyserveren, og
der bruges flere proxyservere i lag - hvilket kan give
"X-Forwarded-For"-headers, der fx indeholder
"10.15.4.14, 10.15.4.19, 213.237.11.129" - så tages kun den første
IP-adresse.

--
- Peter Brodersen

Ugens sprogtip: jamen (og ikke jammen)

Leonard (15-12-2003)
Kommentar
Fra : Leonard


Dato : 15-12-03 21:06

Peter Brodersen <usenet@ter.dk> wrote:

>"X-Forwarded-For"-headers, der fx indeholder
>"10.15.4.14, 10.15.4.19, 213.237.11.129" - så tages kun den første
>IP-adresse.

OK, er det så altid den første adresse der viser den reelle bruger?
--
mvh Leonard http://leonard.dk/
Det er en muldvarp på motorcykel!
Hvad er det, der er småt, sort og meget hurtigt?
http://usenet.dk/netikette/citatteknik.html

Peter Brodersen (15-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 15-12-03 21:16

On Mon, 15 Dec 2003 21:06:29 +0100, Leonard <nospam@invalid.invalid>
wrote:

>>"X-Forwarded-For"-headers, der fx indeholder
>>"10.15.4.14, 10.15.4.19, 213.237.11.129" - så tages kun den første
>>IP-adresse.
>OK, er det så altid den første adresse der viser den reelle bruger?

Puha... :)

Altså, under normale omstændigheder, ja. Men som i ovenstående
tilfælde, så er "10.15.4.14" en lokalnet-adresse, fordi der bruges en
proxy imellem. Spørgsmålet er, hvad man (dvs. Søren i det her
tilfælde) er interesseret i at vise.

Jeg synes ikke, det giver mening, at man i nogle tilfælde fortæller
folk deres lokalnet-adresse (hvis de bruger en proxy mellem
lokalnettet og Internet), og i andre tilfælde giver folk deres
eksterne adresse (selvom de sidder på lokalnet). Dertil kommer så, at
lokalnet-adressen også blot kan være en gateway for et andet NAT'et
netværk, og så har man hverken den korrekte LAN- eller WAN.adresse.

Dertil kommer, at den klient, der forbinder til dig, i princippet kan
fyre hvad som helst tilbage til dig i "X-Forwarded-For"-headeren. Skal
du logge noget, så giver det aldrig mening kun at logge
"X-Forwarded-For". Den eneste data, du ret sikkert kan stole på, er
remote-adressen (REMOTE_ADDR) - der så måske rigtigt nok bare er en
proxy. Men det er i al fald den eneste klient, som webserveren
kommunikerer med.

Et eksempel: http://ip.ter.dk/ antager, at folk bruger siden, fordi de
er interesseret i at finde ud af, hvad deres eksterne IP-adresse
sandsynligvis er. Siden antager, at folk ikke fake'r headers, idet det
er et værktøj til folk selv (folk skal da være velkomne til at snyde,
men det svarer lidt at sende en e-mail til sig selv med forfalsket
adresse :). Siden tjekker så X-Forwarded-For, finder den første
ikke-RFC1918-adresse i listen, og (hvis der findes en sådan) viser den
i stedet for REMOTE_ADDR - dvs. "213.237.11.129" i det citerede
eksempel. Det er en del af designet. Siden er ikke beregnet til at
skræmme folk eller på anden måde prøve at lure noget om brugeren.

--
- Peter Brodersen

Ugens sprogtip: jamen (og ikke jammen)

Søren (15-12-2003)
Kommentar
Fra : Søren


Dato : 15-12-03 21:50

Peter Brodersen wrote:
> Altså, under normale omstændigheder, ja. Men som i ovenstående
> tilfælde, så er "10.15.4.14" en lokalnet-adresse, fordi der bruges en
> proxy imellem. Spørgsmålet er, hvad man (dvs. Søren i det her
> tilfælde) er interesseret i at vise.

Det er den eksterne IP adresse, der er min interesse.

> Et eksempel: http://ip.ter.dk/ antager, at folk bruger siden, fordi de
> er interesseret i at finde ud af, hvad deres eksterne IP-adresse
> sandsynligvis er.

På den pågældende side får man også vist sin host adresse og jeg kunne
være interesseret i at høre hvordan PHP koden ser ud i dette tilfælde -
er der nogen der kender til denne ?

Søren


Peter Brodersen (15-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 15-12-03 22:17

On Mon, 15 Dec 2003 21:50:12 +0100, Søren <sorenh@gmx.net> wrote:

>> Altså, under normale omstændigheder, ja. Men som i ovenstående
>> tilfælde, så er "10.15.4.14" en lokalnet-adresse, fordi der bruges en
>> proxy imellem. Spørgsmålet er, hvad man (dvs. Søren i det her
>> tilfælde) er interesseret i at vise.
>Det er den eksterne IP adresse, der er min interesse.

Så må du gennemgå hvert led i X-Forwarded-For og tjekke at det ikke er
en RFC1918-IP-adresse. Det er unægteligt et større arbejde end bare at
spytte REMOTE_ADDR ud :)

>På den pågældende side får man også vist sin host adresse og jeg kunne
>være interesseret i at høre hvordan PHP koden ser ud i dette tilfælde -
>er der nogen der kender til denne ?

gethostbyaddr() : http://php.net/gethostbyaddr

--
- Peter Brodersen

Ugens sprogtip: jamen (og ikke jammen)

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408528
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste