Avatar billede echelon01 Nybegynder
20. april 2002 - 00:30 Der er 20 kommentarer

Hvem er på?

Kan nogen lave mig et script, der, når en bruger logger ind, indsætter brugernavnet i en database, og når man lukker vinduet igen fjerner den brugernavnet fra databasen.
  Jeg havde forestillet mig dette kunne lade sig gøre med sessions?
Avatar billede dmcn Praktikant
20. april 2002 - 00:39 #1
Hvad om du selv gik i gang med det? Så kan vi hjælpe dig med dine problemer. Du sparer point, og lærer samtidig meget mere.
Avatar billede mc.lucifer Praktikant
20. april 2002 - 00:39 #2
cool svar
MC
Avatar billede echelon01 Nybegynder
20. april 2002 - 00:44 #3
Tjae, jeg har prøvet - men jeg har ikke rigtig fået svar på mit spørgsmål om en javascript event handler, som kun aktiveres når vinduet lukkes, og ikke når det opdateres (som fx onunload gør)
Avatar billede dmcn Praktikant
20. april 2002 - 00:53 #4
Simpelt - du smider et timestamp i tabellen hver gang en bruger besøger en af dine sider. Samtidig giver du ham et unikt id (session-id). Når han så går ind på en anden side, så tjekker du om han har et id, og har han det opdaterer du hans timestamp.
I selve funktionen der skal vise antal online hiver du alle ud, der har fået opdateret deres timestamp i løbet af de sidste 10 minutter. På den måde får du en ret præcis indikation af hvor mange personer der er på dit site, da alle brugere tilføjes når de besøger siden, og fjernes igen hvis de ikke har fået opdateret deres timestamp i de sidste ti minutter - altså, hvis de har forladt sitet.
Så er det bare at kode! :)
Avatar billede echelon01 Nybegynder
20. april 2002 - 00:55 #5
Og har jeg forstået det rigtigt? Timestamp er noget jeg skal sætte op i MySQL (mener der er en fukntion til det), eller skal jeg selv lave en funktion vha. date() ??
Avatar billede well_r Nybegynder
20. april 2002 - 00:57 #6
der er en såkaldt dropdownbox hvis du altså bruger phpmyadmin..
der vælger du blot timestamp og så indsætter du blot session id'et ind.. så skulle den selv lave timestamp :D
Avatar billede dmcn Praktikant
20. april 2002 - 00:59 #7
Du kan bare smide time(); ind - da du ikke skal udskrive dato o.l., så er det nok. Træk derefter timestamp fra time(); når siden loades, og sorter dem fra, der er mere end 10 minutter gamle.
Avatar billede echelon01 Nybegynder
20. april 2002 - 01:00 #8
baahhh - phpMyAdmin er for tøser... Rigtig sql er sjawt ;)
Avatar billede well_r Nybegynder
20. april 2002 - 01:02 #9
Echelon01 :p
manden virker jo som om han er ny..til php.. måske er han også til sql :D
Avatar billede echelon01 Nybegynder
20. april 2002 - 01:02 #10
jeg er med - laver det i morgen... Jeg er alt for træt til sådan et projekt nu :|
Avatar billede well_r Nybegynder
20. april 2002 - 01:04 #11
træt?..damn..har glemt at jeg skulle i seng*GG* :p
Avatar billede echelon01 Nybegynder
20. april 2002 - 01:06 #12
Kender godt fornemmelsen :)

G'nat
Avatar billede well_r Nybegynder
20. april 2002 - 01:06 #13
nat nat
Avatar billede shjorth Nybegynder
20. april 2002 - 12:18 #14
http://www.o-piz.dk/source/online.phps <-- Det kan du jo bruge...
Avatar billede otis Nybegynder
20. april 2002 - 16:14 #15
websources,  det fjerner jo ikke brugeren når han lukker browseren, men først når der ikke har været "kontakt" mellem ham og databasen i et givent stykke tid :)

/Otis
www.o-piz.dk
Avatar billede well_r Nybegynder
20. april 2002 - 16:28 #16
hvorfor ikke bare lave..
hvis brugeren går ud af eks. index.php så køres et javascript der gør at hans row bliver slettet...
kommer han fra index.php til about.php så slettes hans row ved udgangen af index.php men bliver oprettet igen ved about.php
det er vel den bedste måde at gøre det på? :)
Avatar billede echelon01 Nybegynder
20. april 2002 - 17:59 #17
well_r: det har jeg også prøvet at lave, men problemet er, at hvis brugeren skifter sider, så kan han risikere at blive vist to gange i listen over online brugere..
Avatar billede echelon01 Nybegynder
20. april 2002 - 18:54 #18
Nu har jeg lavet lidt, men den udskriver kun brugern en gang imellem?

$datetodelete = date("YmdHis") - 1;
$user = "testuser";
mysql_connect($sqlhost, $sqluser, $sqlpass) or die ("Der opstod en fejl ved forbindelse til SQL serveren - Fejlen er ".mysql_error());
mysql_select_db($sqlbase) or die("Der opstod en fejl ved forbindelse til SQL serveren - Fejlen er ".mysql_error());
mysql_query("DELETE FROM online WHERE date < $datetodelete");
$foresp = mysql_query("SELECT * FROM online WHERE ip = '$REMOTE_ADDR' ORDER BY id ASC");
while ($data = mysql_fetch_array($foresp)) {
    $dbuser[] = $data[user];
};
echo "Brugere i databasen:<br>";
for ($i=0; $i<count($dbuser); $i++) {
    echo $dbuser[$i]."<br>";
}
$tomt = count($dbuser);
if ($tomt == 0) {
mysql_query("INSERT INTO online (ip, user) VALUES ('$REMOTE_ADDR', '$user')") or die("Der opstod en fejl ved forbindelse til SQL serveren - Fejlen er ".mysql_error());
}
Avatar billede echelon01 Nybegynder
20. april 2002 - 18:55 #19
brugerne :)
Avatar billede cyberjelle Nybegynder
30. januar 2006 - 21:19 #20
lukketid?
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