Avatar billede xirox Nybegynder
29. oktober 2005 - 01:17 Der er 27 kommentarer og
1 løsning

Insæt ip adresse i db

Hej Eksperter

Jeg er blevet lidt træt af at side og kode i noget tid nu så er blevet helt blank.

Men hvordan er det nu man gør sådan at så snart en bruger kommer ind på ens siden bliver hans ip adresse sat ind i databassen.

Og så slettes igen når han lukker ud?

Det sidste skulle ikke være noget problem, men hvis en lige hurtigt viste det kan i bare skrive det på.

På forhånd tak

Xirox
Avatar billede jakobdo Ekspert
29. oktober 2005 - 07:50 #1
Det at indsætte en ip er intet problem:
INSERT INTO brugere(datotid,ip) VALUES(NOW(),'".$_SERVER["REMOTE_ADDR"]."')

Men at slette når en bruger lukker, det kan du ikke!
Tilgengæld bruges ofte funktionen med at sige en bruger evt er online i 5 minutter, og alle bruger ældre end 5 minutter er offline.
Så vi kunne lave et script som så inden den indsætter, sletter alle som har datotid ældre end 5 minutter.
DELETE brugere WHERE datotid < ADDDATE(NOW(), INTERVAL -5 MINUTE)
Avatar billede Slettet bruger
29. oktober 2005 - 08:58 #2
Kræver så i givet fald at der laves et update hver gang brugeren laver et request - det virker lidt dyrt. Måske det var mere fremkommeligt at lave noget med Sessions - og så slette når session "dør"
Avatar billede jakobdo Ekspert
29. oktober 2005 - 09:00 #3
Du kan jo ikke slette når en session er død, der smides jo ikke en event... ???
Avatar billede Slettet bruger
29. oktober 2005 - 09:16 #4
Du har ret PHP har jo ikke session_end DOH, my bad

Ovenstående er bare et problem med mindre vi taler meget lille site der ved bliver at være lille, da alle requests til siten skal:

1) Indsætte/opdaterer tid for IP
2) Lave en delete på interval

Altsammen stort set at betragte som overhead. Om ikke andet ville jeg nok foretrække at delete blev lavet at et job (CRON/Scheduled task), hvis det er muligt. Derved mindskes om ikke andet mængden af deletes der skal køres på siten.
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:16 #5
Så får jeg mig sådan en lille sød fejl her ved "INSERT" kommandoen
Parse error: parse error, unexpected T_STRING in index.php on line 57
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:22 #6
Parse error: parse error, unexpected ']', expecting T_STRING or T_VARIABLE or T_NUM_STRING in index.php on line 60

<?
$dei_fsp6 = mysql_query("INSERT INTO dei_kob(time,ip) VALUES(NOW(),'".$_SERVER["REMOTE_ADDR"]."') or die(mysql_error());
while($row6[] = mysql_fetch_array($dei_fsp6));
array_pop($row6);
?>
Avatar billede jakobdo Ekspert
29. oktober 2005 - 12:22 #7
Du skal "selvfølgelig" bruge:
mysql_query("INSERT INTO brugere(datotid,ip) VALUES(NOW(),'".$_SERVER["REMOTE_ADDR"]."')");
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:25 #8
jo jo det gør jeg også
Avatar billede jakobdo Ekspert
29. oktober 2005 - 12:29 #9
HVad er din linie 57 og 60?
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:30 #10
57 = tom
60 = while($row6[] = mysql_fetch_array($dei_fsp6));
Avatar billede jakobdo Ekspert
29. oktober 2005 - 12:34 #11
Hvad er det for en måde du trækker data ud på?
Jeg bruger normalt:
while ($row = mysql_fetch_assoc($dei_fsp6))
{
  echo $row["data"];
}
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:37 #12
Det er bare den måde jeg koder siden i ;=)
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:38 #13
Men hvad skal hele min insert kode så hede så det virker??
Avatar billede jakobdo Ekspert
29. oktober 2005 - 12:43 #14
Prøv at test denne:
mysql_query("INSERT INTO brugere(datotid,ip) VALUES(NOW(),'".$_SERVER["REMOTE_ADDR"]."')");
Husk at connect til din db.
Efter en insert kan du ikke trække data ud.
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:46 #15
ahh ok prøver
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:49 #16
SÅ kommer denne her fejl.
Parse error: parse error, unexpected T_STRING in index.php on line 65

Linie 65 har ikke noget med php at gøre, jeg har sat koden op således:

mysql_query("INSERT INTO dei_kob(time,ip) VALUES(NOW(),'".$_SERVER["REMOTE_ADDR"]."') or die(mysql_error());
//--------------------------------------------------\\
?>

og den includer db.php længere op
Avatar billede xirox Nybegynder
29. oktober 2005 - 12:58 #17
Jeg har prøvet at lave en test.php der kommer ingen fejl. men det skal jo virke sammen med index filen ellers kan det jo ikke bruges.
Hvordan klare jeg det?
Avatar billede jakobdo Ekspert
29. oktober 2005 - 12:59 #18
Du har fjernet noget af min kode:
Se min:
mysql_query("INSERT INTO dei_kob(time,ip) VALUES(NOW(),'".$_SERVER["REMOTE_ADDR"]."')") or die(mysql_error());
Din:
mysql_query("INSERT INTO dei_kob(time,ip) VALUES(NOW(),'".$_SERVER["REMOTE_ADDR"]."') or die(mysql_error());
Avatar billede xirox Nybegynder
29. oktober 2005 - 13:01 #19
Klart :D Jeg er lige stået op. Det var en hård nat i koder her i nat :D

Tak for hjælpen
Avatar billede jakobdo Ekspert
29. oktober 2005 - 13:03 #20
Det var så lidt! :o)
Avatar billede xirox Nybegynder
29. oktober 2005 - 13:07 #21
Nu hvor jeg har fat i dig hvordan klare jeg så den delete der.

Kan jeg gøre noget aka .
<?
DELETE * from der_kob WHERE time < ADDDATE(NOW(), INTERVAL -5 MINUTE)
?>
Avatar billede jakobdo Ekspert
29. oktober 2005 - 13:10 #22
mysql_query("DELETE * from dei_kob WHERE time < ADDDATE(NOW(), INTERVAL -5 MINUTE)") or die(mysql_error());
Avatar billede xirox Nybegynder
29. oktober 2005 - 13:16 #23
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '* from dei_kob WHERE time < ADDDATE(NOW(), INTERVAL -5 MINUTE)'
Avatar billede jakobdo Ekspert
29. oktober 2005 - 13:19 #24
mysql_query("DELETE from dei_kob WHERE time < ADDDATE(NOW(), INTERVAL -5 MINUTE)") or die(mysql_error());
Jeg sover også nogle gange! :o)
Avatar billede xirox Nybegynder
29. oktober 2005 - 13:23 #25
hehe jamen det kan ikke blive bedre, så kan jeg komme videre med det jeg kan finde ud af ;D mange tak for hjælpen. smider du et svar!
Avatar billede jakobdo Ekspert
29. oktober 2005 - 13:27 #26
svar
Avatar billede xirox Nybegynder
29. oktober 2005 - 14:04 #27
Tak igen igen
Avatar billede jakobdo Ekspert
29. oktober 2005 - 14:05 #28
Takker for point!
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