Avatar billede funkeychicken Nybegynder
15. maj 2003 - 18:43 Der er 22 kommentarer og
1 løsning

sidst aktiv/online brugere

jeg vil gerne lave sådan et system hvor man kan se hvilke brugere der er online på siden...

jeg vil ikke bruge de der popop som dukker op når man lukker browseren ned...

har hørt noget om en sidst aktiv som opdaterer hver gang man navigerer sig rundt på siden...

prøvede så at lave det med tid ved at smide klokkeslæt ind...f.eks 1843 og så hvis man ikke har været aktiv i 10 minutter vil den smide en af..

men der går jo 60 minutter 1 time og ikke 100 så jeg kan ikke bruge det da 1900 er 40 "minutter" fra 1859..så den smider alle af hver gang en time er gået..

hvordan kan man ellers gøre?
Avatar billede mjl Nybegynder
15. maj 2003 - 18:47 #1
Brugeren sætter sin tid time() - og alle andre brugere der logger ind, sender et tjek til DB'en, og sætter alle der er mere end 600 sek. gamle til 0
Avatar billede kaptajnkemo Nybegynder
15. maj 2003 - 18:48 #2
brug et timestamp.... eller en simpel date/time funktion.
Avatar billede mjl Nybegynder
15. maj 2003 - 18:48 #3
...så alle der ikke er lig med 0 er altså online nu!!!
Avatar billede tipsen Nybegynder
15. maj 2003 - 19:05 #4
i stedet for "online" burde man skrive "unikke besøgende de sidste 10 min" - det passer rent faktisk, men selvfølgelig lyder det ikke så godt!
Avatar billede ohmish Nybegynder
15. maj 2003 - 19:45 #5
hvis det er mysql:

$time = date("Y-m-d H:i:s", (time()-300)); //  MIN
@mysql_query("UPDATE brugere SET status='offline' WHERE sidst < '$time' ");

og så en der sætter brugerens (mig) status til "online". hver gang han/hun "bevæger" sig på siden.
Avatar billede ohmish Nybegynder
15. maj 2003 - 19:47 #6
dvs.:

$ligenu = date("Y-m-d H:i:s");
@mysql_query("UPDATE brugere SET status='online', sidst='$ligenu' WHERE brugernavn='$_COOKIE[brugernavn] AND kodeord='$_COOKIE[kodeord]' ");
Avatar billede funkeychicken Nybegynder
16. maj 2003 - 20:07 #7
ok....åprøver lige din omish,...

hvad skal sidst være? bare normal tekst eller timestamp eller hvad...har ik forstand på timestamop og ved ik hvad det er...
Avatar billede funkeychicken Nybegynder
16. maj 2003 - 20:13 #8
omish>> tror ik det virker...

det skal være en der tjecker om indenfor de sidste 10 minutter....hvis der ik er noget slettes han fra databasen, eller som du siger, sættes til offline...

din tjecker jo ik om der er sket noget indenfor de sidste 10 minutter...den sætter bare til offline...
Avatar billede funkeychicken Nybegynder
17. maj 2003 - 12:39 #9
er i der?
Avatar billede ohmish Nybegynder
17. maj 2003 - 15:18 #10
denne her sætter brugere der ikke er aktive inden for de seneste 10 minutter, til offline.

$time = date("Y-m-d H:i:s", (time()-600)); //  10 MIN
@mysql_query("UPDATE brugere SET status='offline' WHERE sidst < '$time' ");
Avatar billede ohmish Nybegynder
17. maj 2003 - 15:18 #11
jeg bruger det selv og det virker upåklageligt
Avatar billede ohmish Nybegynder
17. maj 2003 - 15:20 #12
du skal jo selvfølgelig tilpasse det dit eget system, og lave alle de andre funktioner der kræves.
Avatar billede ohmish Nybegynder
17. maj 2003 - 15:21 #13
feltet 'sidst' skal være DATETIME i mysql
Avatar billede funkeychicken Nybegynder
17. maj 2003 - 16:11 #14
jeg er ik helt så god til det der med php..

hvis nu der kun skal stå klokkeslæt ved sidst aktiv istedet for dato hvad så?

hvordan skal koden så se ud..

ved godt jeg er lidt krævende..hvis du vil have fler point så bare sig til...
Avatar billede ohmish Nybegynder
17. maj 2003 - 16:20 #15
jamen så skal du bare lade det være præcis som det er, og hvis du vil vise hvornår brugeren sidst var online eller hvor længe han/hun har været på skal du bruge:

<?php
$hentbruger = @mysql_query("SELECT * FROM brugere");
$vb = @mysql_fetch_array($hentbruger);
while ($vb) {
$vbruger $vb['brugernavn'];
$vstatus $vb['status'];
$vdato = explode(" ", $vb['sidst']);
$diff = strtotime(date("Y-m-d")) - strtotime($vdato[0]);
$dage = floor($diff / 86400);
if ($vlog>0) {
if ($dage>0) {
if ($dage==1) { $datoinfo = "(sidst p&aring;: i g&aring;r kl. $vdato[1])"; }
elseif ($dage>1) { $datoinfo = "(sidst p&aring;: $dage dage siden)"; }
} else { $datoinfo = "(sidst p&aring;: i dag kl. $vdato[1])"; }
}
if ($vstatus=="offline") { $statinfo="offline $datoinfo"; }
elseif ($vstatus=="online") { $statinfo="online siden kl. $vfoerst"; }
echo $vbruger." - ".$statinfo."<br>";
$vb = @mysql_fetch_array($hentbruger);
}
?>

Sæt gerne point op hvis du vil have mere hjælp :)
Avatar billede funkeychicken Nybegynder
17. maj 2003 - 16:27 #16
ik det jeg mener :-)

du registrer den dato som 2003-05-17 16:22:08 men jeg skal kun bruge 22:08 ..hvordan vil koden til det så se ud..

vil du have fler point end de30 der er sat af nu?
Avatar billede ohmish Nybegynder
17. maj 2003 - 16:34 #17
Hov... sådan her:

<?php
$hentbruger = @mysql_query("SELECT * FROM brugere");
$vb = @mysql_fetch_array($hentbruger);
while ($vb) {
$vbruger $vb['brugernavn'];
$vfoerst = explode(" ", $vb['foerst']);
$vstatus $vb['status'];
$vdato = explode(" ", $vb['sidst']);
$diff = strtotime(date("Y-m-d")) - strtotime($vdato[0]);
$dage = floor($diff / 86400);
if ($vlog>0) {
if ($dage>0) {
if ($dage==1) { $datoinfo = "(sidst p&aring;: i g&aring;r kl. $vdato[1])"; }
elseif ($dage>1) { $datoinfo = "(sidst p&aring;: $dage dage siden)"; }
} else { $datoinfo = "(sidst p&aring;: i dag kl. $vdato[1])"; }
}
if ($vstatus=="offline") { $statinfo="offline $datoinfo"; }
elseif ($vstatus=="online") { $statinfo="online siden kl. $vfoerst[1]"; }
echo $vbruger." - ".$statinfo."<br>";
$vb = @mysql_fetch_array($hentbruger);
}
?>


selve FORSIDEN på din hjemmesiden skal indeholde:
<?
$hentbruger = @mysql_query("SELECT foerst FROM brugere WHERE brugernavn='$_COOKIE[brugernavn] AND kodeord='$_COOKIE[kodeord]' ");
$vb = @mysql_fetch_array($hentbruger);
$foerst $vb['foerst'];
if ($foerst < date("Y-m-d H:i:s", (time()-3600))) {
$ligenu = date("Y-m-d H:i:s");
@mysql_query("UPDATE brugere SET status='online', foerst='$ligenu', sidst='$ligenu' WHERE brugernavn='$_COOKIE[brugernavn] AND kodeord='$_COOKIE[kodeord]' "); }
?>

alle andre sider skal indeholde:

<?
$time = date("Y-m-d H:i:s", (time()-300)); //  MIN
@mysql_query("UPDATE brugere SET status='offline' WHERE sidst < '$time' ");
$ligenu = date("Y-m-d H:i:s");
@mysql_query("UPDATE brugere SET status='online', sidst='$ligenu' WHERE brugernavn='$_COOKIE[brugernavn] AND kodeord='$_COOKIE[kodeord]' ");
?>


din tabel i databasen kunne se ca. sådan her ud:

CREATE TABLE brugere (
  id int(11) NOT NULL auto_increment,
  brugernavn varchar(30) NOT NULL,
  kodeord varchar(250) NOT NULL,
  foerst datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
  sidst datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
  status varchar(10) NOT NULL,
  PRIMARY KEY (id)
);
Avatar billede ohmish Nybegynder
17. maj 2003 - 16:37 #18
hvorfor kun minutter og sekunder, og ikke den fulde tid?

hmm du er nødt til at bruge datetime og den fulde dato+tid, og så evt. skære tiden ud som jeg har gjort.
Avatar billede funkeychicken Nybegynder
17. maj 2003 - 16:37 #19
tusind tak det virker nu...

danske bitt3e schoon.
Avatar billede ohmish Nybegynder
17. maj 2003 - 16:37 #20
tjaa.. doble evt. point op.
Avatar billede ohmish Nybegynder
17. maj 2003 - 16:38 #21
hmm nå.
Avatar billede ohmish Nybegynder
17. maj 2003 - 16:39 #22
selv tak
Avatar billede funkeychicken Nybegynder
17. maj 2003 - 17:06 #23
var vist lidt for urtig :-)

http://www.eksperten.dk/spm/353719
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

IT-JOB

Politiets Efterretningstjeneste

GenAI-specialist i PET

Capgemini Danmark A/S

AI/Data Engineer

Politiets Efterretningstjeneste

Netværksspecialist til IT i PET