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?
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)
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! :)
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() ??
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
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.
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 :)
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å? :)
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..
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()); }
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.