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?
Annonceindlæg fra Computerworld it-jobbank
26. februar 2001 - 00:17
#1
Indsæt flg. på siden: $f = fopen(\"fil.txt\", \"w\"); fputs($f, $REMOTE_ADDR); fclose($f);
26. februar 2001 - 00:19
#2
Hvilken side? (newbie = me)
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....
26. februar 2001 - 00:22
#4
Du skriver: \"hvis personen går ind på en bestemt side\" - det er den side, jeg mener :-)
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
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
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.
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
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);
26. februar 2001 - 00:29
#10
og den omgår det problem som ISS nævner
26. februar 2001 - 00:31
#11
ISS > jeg var lige 50 sek hurtigere :-)
26. februar 2001 - 00:32
#12
Tak, lundsfryd
26. februar 2001 - 00:32
#13
webmasterdk -> Ja, jeg kan næsten gætte hvor du har den fra:)))
26. februar 2001 - 00:33
#14
ja, og den funker som den skal, du burde jo næsten få lidt provision!
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
26. februar 2001 - 00:34
#16
mkelle1 -> Nej man gør ej, der får man den hvis PHP køre i safemode...
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:)))))))))))))))
26. februar 2001 - 00:37
#18
Jeg er squ for langsom :)
26. februar 2001 - 00:38
#19
nej det var bare fordi jeg så forkert, jeg troede at mit svar var blevet accepteret. :-(
26. februar 2001 - 00:40
#20
counterstrike >> Det var så lidt :)
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:))
26. februar 2001 - 00:43
#22
det holder mit budget desværre ikke til! :-)
26. februar 2001 - 00:44
#23
Hey, jeg vil have mine points tilbage!!! Det var forkert
26. februar 2001 - 00:44
#24
webmasterdk -> Vi kan ud arbejde en rabat ordning:)) L8r... Skal op imorg.... idag og på uni...
26. februar 2001 - 00:46
#25
skal vi ikke bare kalde det freeware?
26. februar 2001 - 00:47
#26
counterstrike >> hvad er problemet?
26. februar 2001 - 00:52
#27
har du husket og sætte chomd til 777 på den fil der skal skrives til?
26. februar 2001 - 00:53
#28
ja
26. februar 2001 - 00:53
#29
chomd=chmod, just in case :-)
26. februar 2001 - 00:54
#30
Den skriver kun en ip. Man kan ikke se allesammen!
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!
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!
26. februar 2001 - 00:56
#33
iss >> Det har jeg skrevet ovenfor :) counterstrike >> bare udskift w med a
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);
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
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);
26. februar 2001 - 01:15
#37
satans, denne gang var jeg for langsom, :-)
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
26. februar 2001 - 02:37
#39
hvad skal der så stå for at tilføje i starten af filen?
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.
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
26. februar 2001 - 23:00
#42
Skriver parameteren \'r+\' ikke til starten af filen... ? Mikkel
26. februar 2001 - 23:06
#43
Er du sikker på, at r+ findes?
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.
26. februar 2001 - 23:31
#45
\'r+\' - Open for reading and writing; place the file pointer at the beginning of the file
26. februar 2001 - 23:40
#46
26. februar 2001 - 23:47
#47
mikkelfunck >> ahh, ja, selvfølgelig gør den det :)
Vi tilbyder markedets bedste kurser inden for webudvikling