Avatar billede DePlex Nybegynder
29. oktober 2010 - 21:25 Der er 16 kommentarer og
1 løsning

Online tid

Jeg vil gerne have et script der hvis hvor lang tid man har været online. Her er min tjek login:

function checkLogin(){
      global $database;
      if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookid'])){
        $this->username = $_SESSION['username'] = $_COOKIE['cookname'];
        $this->userid  = $_SESSION['userid']  = $_COOKIE['cookid'];
      }

      if(isset($_SESSION['username']) && isset($_SESSION['userid']) &&
        $_SESSION['username'] != GUEST_NAME){
        if($database->confirmUserID($_SESSION['username'], $_SESSION['userid']) != 0){
            unset($_SESSION['username']);
            unset($_SESSION['userid']);
            return false;
        }

        $this->userinfo  = $database->getUserInfo($_SESSION['username']);
        $this->username  = $this->userinfo['username'];
        $this->userid    = $this->userinfo['userid'];
        $this->userlevel  = $this->userinfo['userlevel'];
        return true;
      }
      else{
        return false;
      }
  }
Avatar billede danco Nybegynder
29. oktober 2010 - 21:29 #1
Jeg tænker at du ved login kan oprette en helt ny session der indeholder et timestamp ved login. På den måde kan du hele tiden beregne online-tid.

$_SESSION['login_time'] = time();

Det er umiddelbart den letteste måde at gøre det på hvis du spørger mig.
Avatar billede repox Seniormester
29. oktober 2010 - 21:32 #2
Jeg tror at du må beskrive målet, for at få det rette middel. Hvad skal oplysningen bruges til og skal oplysningen lagres til senere brug?
Avatar billede DePlex Nybegynder
29. oktober 2010 - 21:35 #3
Tiden skal lagres så det kan vises på ens profil. Så skal jeg kunne få online tiden igen så der kommer til at stå Online tid: XXX Timer og XX Minutter.
Avatar billede repox Seniormester
29. oktober 2010 - 21:58 #4
Er det en samlet over flere sessioner eller blot en ny for hver gang brugeren logger på og af?
Avatar billede DePlex Nybegynder
29. oktober 2010 - 22:29 #5
Samlet over flere sessioner.
Avatar billede repox Seniormester
29. oktober 2010 - 23:08 #6
Alt afhængigt af dit niveau for præcision, kan du jo lave mange forskellige løsninger. Du kan blandt andet lave en AJAX løsning som opdaterer databasen stort set realtime.

Du kan også lave lidt fiksfakseri med at logge sidste aktivitet og bestemme forskellen mellem sidste login og sidste aktivitet (i tilfælde af dine brugere ikke logger ud).
Avatar billede DePlex Nybegynder
29. oktober 2010 - 23:53 #7
Men hvordan får jeg tiden ind i databasen? Og så har jeg ingen forstand på AJAX, så jeg skal nok læse lidt her i weekenden.
Avatar billede repox Seniormester
30. oktober 2010 - 00:11 #8
Det kommer an på hvad du vil registrere og på hvilken måde du vil gøre det på? Altså, du må tage lidt initiativ til den løsning du gerne vil frem til.
Avatar billede DePlex Nybegynder
30. oktober 2010 - 11:08 #9
Altså jeg skal have registret for længe en bruger har været online. Den skal så tælle imens checklogin er true. Så vil jeg lave et felt i databasen hvor jeg så kan hente oplysningerne om hvor længe man har været online på et senere tidspunkt.
Avatar billede repox Seniormester
30. oktober 2010 - 11:34 #10
Er checklogin en værdi i din database eller er det en session/cookie værdi?

Hvis det er en databaseværdi, skal du du registrere hvornår brugeren logger på og hvornår brugeren logger af/sidst har haft aktivitet. Derpå trækker du de to tal fra hinanden og får så den tid mellem de to tidspunkter. Så kan du lægge dem til det felt hvor du vil registrere online tid.

Hvis det er en klientbaseret værdi, skal du anvende AJAX og tælle op realtime.
Avatar billede DePlex Nybegynder
30. oktober 2010 - 11:51 #11
Det er en session/cookie værdi. Så jeg hvis bare igang med at have læst lidt AJAX da jeg aldrig har læst på det før :)
Avatar billede repox Seniormester
30. oktober 2010 - 12:05 #12
Du kan eventuelt kigge på jQuerys AJAX bibliotek (nogle kan lide det, jeg kan ikke) på http://api.jquery.com/category/ajax/

Personligt anvender jeg denne: http://www.hunlock.com/blogs/The_Ultimate_Ajax_Object
Den er kort og nem at have med at gøre.
Avatar billede DePlex Nybegynder
31. oktober 2010 - 14:47 #13
Har sat og læst AJAX i et par timer nu, men jeg forstår det simpelthen ikke. Har lavet et felt i min batabase der laver et timestamp for hvornår brugeren sidst har været aktiv. Man kan ikke se om brugeren har været logget af. Hvordan gør man så den tjekker om brugeren er logget af?
Avatar billede repox Seniormester
01. november 2010 - 08:49 #14
Du kan kun lave et kvalificeret gæt ud fra den sidste gang brugeren var aktiv - det er jo ikke alle brugere der logger ud; jeg gør selv sjældent...
Avatar billede DePlex Nybegynder
11. november 2010 - 10:48 #15
Okay... Har nu lavet et felt der ændre sig fra 0 til 1 når man logger ind og omvendt når man logger ud. Hvordan får jeg den så til at tælle det tid der går mens feltet er 1? Har et felt der hedder time der viser hvornår man sidst har været aktiv.
Avatar billede DePlex Nybegynder
07. januar 2011 - 19:16 #16
Repox opret svar så jeg kan få lukket :-)
Avatar billede DePlex Nybegynder
11. januar 2011 - 19:15 #17
lukker, fik alligevel ikke rigtig noget ud af tråden.
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