Avatar billede counterstrike Nybegynder
26. februar 2001 - 00:12 Der er 46 kommentarer og
1 løsning

PHP - IP

Hvordan kan jeg gemme en besøgndes IP i en fil, hvis personen går ind på en bestemt side?
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 00:17 #1
Indsæt flg. på siden:

$f = fopen(\"fil.txt\", \"w\");
fputs($f, $REMOTE_ADDR);
fclose($f);
Avatar billede counterstrike Nybegynder
26. februar 2001 - 00:19 #2
Hvilken side? (newbie = me)
Avatar billede iss Novice
26. februar 2001 - 00:22 #3
$REMOTE_ADDR er ikke med særlig stor garanti for at det er folks rigtige IP, det kan være deres lokale IP, proxy\'s IP eller firewall\'s IP....
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 00:22 #4
Du skriver: \"hvis personen går ind på en bestemt side\" - det er den side, jeg mener :-)
Avatar billede mkelle1 Nybegynder
26. februar 2001 - 00:25 #5
Hej Counterstrike

Selve IP adressen kan du få fat på på følgende måde:

$IP=$REMOTE_ADDR;

Hvis du så vil gemme den i en fil kan du gøre således:
$IPfile=\"IPadresser.txt\";
$fp=fopen($IPfile,\"a\");
fwrite($fp,$IP);
fclose($fp);

Hilsen

Mads
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:28 #6
<?


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


    $fil = fopen(\"ipnummer.wri\",\"a\");
    $ip1 = $IP;
    $ip2 = $FIP;
    $klokken = date(\"D / M / Y - H:i:s\") ;
    $styresys = $HTTP_USER_AGENT;
    $sprog = $HTTP_ACCEPT_LANGUAGE;
    fwrite($fil,\"IPnummer:          $ip1 - $ip2 \\nKlokken:            $klokken \\nStyresystem:        $styresys \\nSprog:              $sprog\\n \\n\");
    fclose($fil);
    echo \"IPnummer:          $ip1 - $ip2 <br>\\nKlokken:            $klokken <br>\\nStyresystem:        $styresys <br>\\nSprog:              $sprog<br>\\n <br>\\n\" ;
   
  ?>
kan ses på www.boegh.f2s.com/billeder.php3
outputtet kan ses på www.boegh.f2s.com/ipnummer.wri
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 00:28 #7
iss >> Det er helt rigtigt, men der findes så vidt jeg ved ikke andre metoder (der er nemme at gå til)

counterstrike >> Husk lige, at uanset om du bruger mit eller mkelle1\'s svar, så skal filen eksistere om have chmod 666, hvis det skal virke. Alternativt kan du give biblioteket chmod 777 og anvende w+ i stedet for w, så opretter den selv filen.
Avatar billede mkelle1 Nybegynder
26. februar 2001 - 00:28 #8
Hej Counterstrike

1. Du anbringer scriptet i toppen af den side man går ind på.
2. I funktionen fopen skal du skrive parametren \"a\" og ikke \"w\" som lundsfryd foreslår, for med \"w\" sletter du alt hvad der stod i filen i forvejen.

og 3. ISS har ret. Der er vist en metode som giver et bedre resultat. Jeg leder lige.

Hilsen

Mads
Avatar billede iss Novice
26. februar 2001 - 00:29 #9
Sådan ville jeg gøre det....

// Filnavn
$Filnavn = \"IP.log\";

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

// Fil åbning, skrivning og lukning.
$fh = fopen($Filnavn, \"w\");
fputs($fh, $IP);
fclose($fh);
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:29 #10
og den omgår det problem som ISS nævner
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:31 #11
ISS > jeg var lige 50 sek hurtigere :-)
Avatar billede counterstrike Nybegynder
26. februar 2001 - 00:32 #12
Tak, lundsfryd
Avatar billede iss Novice
26. februar 2001 - 00:32 #13
webmasterdk -> Ja, jeg kan næsten gætte hvor du har den fra:)))
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:33 #14
ja, og den funker som den skal, du burde jo næsten få lidt provision!
Avatar billede mkelle1 Nybegynder
26. februar 2001 - 00:33 #15
Hej Counterstrike

Iflg Erik Jacobsen og andre kloge hoveder skal man skrive:


global $REMOTE_ADDR;
$IP = $REMOTE_ADDR;

for at slippe uden om proxy\'er m.v.

Mads
Avatar billede iss Novice
26. februar 2001 - 00:34 #16
mkelle1 -> Nej man gør ej, der får man den hvis PHP køre i safemode...
Avatar billede iss Novice
26. februar 2001 - 00:36 #17
webmasterdk -> Du kan få mit konto nummer der kan du bare sætte 500,-/gang du poster den, så skal jeg ikke klage:)))))))))))))))
Avatar billede mkelle1 Nybegynder
26. februar 2001 - 00:37 #18
Jeg er squ for langsom :)
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:38 #19
nej det var bare fordi jeg så forkert, jeg troede at mit svar var blevet accepteret. :-(
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 00:40 #20
counterstrike >> Det var så lidt :)
Avatar billede iss Novice
26. februar 2001 - 00:41 #21
webmasterdk -> Du må stadig godt sætte 500,-kr ind på min konto, jeg er sku ligeglad med de point:))
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:43 #22
det holder mit budget desværre ikke til! :-)
Avatar billede counterstrike Nybegynder
26. februar 2001 - 00:44 #23
Hey, jeg vil have mine points tilbage!!! Det var forkert
Avatar billede iss Novice
26. februar 2001 - 00:44 #24
webmasterdk -> Vi kan ud arbejde en rabat ordning:)) L8r... Skal op imorg.... idag og på uni...
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:46 #25
skal vi ikke bare kalde det freeware?
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 00:47 #26
counterstrike >> hvad er problemet?
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:52 #27
har du husket og sætte chomd til 777 på den fil der skal skrives til?
Avatar billede counterstrike Nybegynder
26. februar 2001 - 00:53 #28
ja
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:53 #29
chomd=chmod, just in case :-)
Avatar billede counterstrike Nybegynder
26. februar 2001 - 00:54 #30
Den skriver kun en ip. Man kan ikke se allesammen!
Avatar billede webmasterdk Praktikant
26. februar 2001 - 00:54 #31
så prøv min eller iss\'s det er en lidt bedre, med min får du også at vide hvilket sporg der bruger og windows ver!
Avatar billede iss Novice
26. februar 2001 - 00:55 #32
webmasterdk -> Freeware.... næææ.... OK, lad gå:))

lundsfryd -> Og huske hvis du ikke bruge +w så skal filen være lavet!
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 00:56 #33
iss >> Det har jeg skrevet ovenfor :)

counterstrike >> bare udskift w med a
Avatar billede counterstrike Nybegynder
26. februar 2001 - 01:09 #34
Er gjort, og det virker. Men hvordan laver jeg mellemrum mellem dem?
// Filnavn
$Filnavn = \"IP.log\";

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

// Fil åbning, skrivning og lukning.
$fh = fopen($Filnavn, \"w\");
fputs($fh, $IP);
fclose($fh);
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 01:12 #35
Du kan lave mellemrum ved udskifte fputs($fh, $IP); med enten

fputs($fh, \"$IP \");  // mellemrum

eller

fputs($fh, \"$IP\\n\");  // linieskift
Avatar billede webmasterdk Praktikant
26. februar 2001 - 01:13 #36
du kunne lave linie skift
// Fil åbning, skrivning og lukning.
$fh = fopen($Filnavn, \"w\");
fputs($fh, $IP\\n);
fclose($fh);
Avatar billede webmasterdk Praktikant
26. februar 2001 - 01:15 #37
satans, denne gang var jeg for langsom, :-)
Avatar billede mkelle1 Nybegynder
26. februar 2001 - 01:25 #38
Det dur ikke med \"w\". Du skal bruge \"a\", da \"w\" sletter alt i den existerende fil, mens \"a\" tilføjer i enden af filen.

Mads
Avatar billede webmasterdk Praktikant
26. februar 2001 - 02:37 #39
hvad skal der så stå for at tilføje i starten af filen?
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 02:45 #40
Den er ikke så nemt :-)

Det er sjældent, at jeg arbejder med filer, men jeg ville nok hente indholdet ned i et array med file()-funktionen:

// fopen osv
$arr = file(\"fil.txt\");
$s = $REMOTE_ADDR.implode(\"\\n\", $arr);
fputs($?, $s);
// fclose osv.

Alternativt kan man læse hele filen med f.eks. fread og så ellers bruge samme teknik.
Avatar billede mkelle1 Nybegynder
26. februar 2001 - 04:14 #41
Der er ikke nogen parameter der gør at den skriver i starten. Hvis du vil have det i starten er du nødt til at læse hele filen ud f.ex. i et array hvor du allerede har givet index 0 den nye værdi, og så læse hele lortet ind igen. Ikke synderligt smart, men hvad er problemet med at det sidste nye står sidst?

Mads
Avatar billede mikkelfunck Nybegynder
26. februar 2001 - 23:00 #42
Skriver parameteren \'r+\' ikke til starten af filen... ?

Mikkel
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 23:06 #43
Er du sikker på, at r+ findes?
Avatar billede iss Novice
26. februar 2001 - 23:28 #44
r+ findes.... r+ gør at der åbnes for læsning og skrivning..... og jo det er i starten af pointeren stå når filen åbnes på denne måde.
Avatar billede iss Novice
26. februar 2001 - 23:31 #45
\'r+\' - Open for reading and writing; place the file pointer at the beginning of the file
Avatar billede mikkelfunck Nybegynder
26. februar 2001 - 23:40 #46
Avatar billede lundsfryd Nybegynder
26. februar 2001 - 23:47 #47
mikkelfunck >> ahh, ja, selvfølgelig gør den det :)
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