Avatar billede berner5300 Nybegynder
31. juli 2011 - 21:09 Der er 11 kommentarer og
1 løsning

Bruge online + offline

Heej alle

Jeg vil gerne have lavet en side på min hjemmeside hvor jeg kan se hvilke brugere der er online.
Det skulle være let nok, men hvis de ikke trykker på log ud, og bare lukker browseren, så står de stadig som online.

Nogen der har en løsning på det, og vil hjælpe mig?
Avatar billede majbom Novice
31. juli 2011 - 21:16 #1
hver gang en side hentes, smider du en record i databasen, eller opdaterer en tidligere (brug evt ip-adresse som unik identifier) med timestamp.

for at se hvor mange brugere der er online pt, henter du bare alle dem hvor timestamp er mindre end fx 5min gammelt...
Avatar billede berner5300 Nybegynder
31. juli 2011 - 21:21 #2
Kan du ikke vise hvordan?
Avatar billede dab93 Nybegynder
31. juli 2011 - 23:16 #3
Noget lign. de her kode:

Naar du logger ind
if(isset($login)) {
  date_default_timezone_set('UTC');

  $clock = date("H:i:s");
  $time = explode(":", $clock);

  mysql_query(" UPDATE TABLE users SET time = '$time' ") or die("Fail: ". mysql_error());
}


Naar du gaar til en anden side
date_default_timezone_set('UTC');

  $clock = date("H:i:s");
  $time = explode(":", $clock);

mysql_query(" UPDATE TABLE users SET time = '$time' ") or die("Fail: ". mysql_error());


Det er ikke det hele, det ved jeg godt. Men her har du faeet en smagsproeve hvis du kan bruge det :).
Avatar billede mjdigital Nybegynder
31. juli 2011 - 23:05 #4
Jeg har lavet det sådan at jeg hver gang 1 side loades, tjekker mit database layer om brugeren er der, hvis ja opdater tiden.

Hvis brugeren ikke er der tilføjes brugeren med tid.

Og har en DateTime.Now.AddMinutes(-5) > TimeStamp vises brugeren som offline. 


Min server køre selv lidt cleanup 03:00 hvor alle brugere i databasen bliver flushed medmindre der overholder mit timestamp.
Avatar billede berner5300 Nybegynder
01. august 2011 - 00:07 #5
Hvordan får jeg lavet et script som tjekker om man har været på siden i fx 60 sekunder?
Avatar billede dab93 Nybegynder
01. august 2011 - 00:33 #6
berner5300
Jeg er ikke lige ved min egen computer lige nu, sender dig et script naar jeg er ved den :)
Avatar billede berner5300 Nybegynder
01. august 2011 - 01:01 #7
Det er bare helt iorden :)
Avatar billede rix Praktikant
01. august 2011 - 06:51 #8
istedet for
  $clock = date("H:i:s");
  $time = explode(":", $clock);
hvorfor ikke bruger NOW() altså
mysql_query(" UPDATE TABLE users SET time = NOW() ") or die("Fail: ". mysql_error());
Avatar billede berner5300 Nybegynder
01. august 2011 - 21:18 #9
Jeg dropper bare denne ide, da jeg ikke kan hitte ud af det.

Ellers tak for hjælpen dab93 og mjdigital.

Hvis i vil have point skriver i bare et svar i to, så deler i point :)
Avatar billede dab93 Nybegynder
01. august 2011 - 22:07 #10
#rix17172
Kan man jo ogsaa goere :)

#berner5300
Du behoever da ikke droppe idéen, jeg skal nok sende koden naar jeg kan :).
Avatar billede majbom Novice
02. august 2011 - 07:19 #11
selv tak...
Avatar billede dab93 Nybegynder
03. august 2011 - 12:12 #12
Hver gang en bruger logger på, skal der fremkomme denne mysql_query.
mysql_query("UPDATE brugere SET lastactive = '" . date("Y-m-d h:i:s") . "' WHERE id = '". $_SESSION['id'] . "'");


Det her skal være i din profil-visning. $status skal udskrives hvor du vil have resultatet.
$to_time=strtotime(date("Y-m-d h:i:s"));
$from_time=strtotime($p_lastactive);
if(round(abs($to_time - $from_time) / 60,2) < 15) {
    $status = '<span style="color: #00FF0C" title="Online">Online</span>';
} else {
    $status = '<span style="color: #FF0000" title="Offline">Offline</span>';
}
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