Kunnen jullie mij opweg helpen met een Login timer script?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kylian Bos

Kylian Bos

15/08/2012 22:11:36
Quote Anchor link
Hallo,

Momenteel ben ik bezig met een website waar ik graag een Login timer op wil hebben staan, Wat ik bedoel met een Login timer is:

1. een persoon logt in
2. het persoon logt naar een bepaalde tijd uit.
3. het java script heeft bij gehouden hoelang het persoon online is geweest
4. het php script voert het in, in de database in de column "last_activity" en in de column "Total_activity".
5. en komt het persoon nog een keer online en logt hij uit naar 5 minuten zou ik het graag zo willen hebben dat het in de column "Total_Activy" word opgeteld, en in de column "last_activity" word veranderd.

Zouden jullie mij hier mee een beetje op weg kunnen helpen?
Ik ben er nu een tijdje mee bezig maar kan er niet uit komen.

Groeten
Kylian Bos
 
PHP hulp

PHP hulp

25/04/2024 04:01:14
 
- Ariën  -
Beheerder

- Ariën -

15/08/2012 22:12:43
Quote Anchor link
Wat heb je dan geprobeerd gezien je er al een tijdje mee bezig bent?
Wij hebben helaas geen glazen bol namelijk ;-)
 
Write Down

Write Down

15/08/2012 22:16:23
Quote Anchor link
- Aar - op 15/08/2012 22:12:43:
Wat heb je dan geprobeerd gezien je er al een tijdje mee bezig bent?
Wij hebben helaas geen glazen bol namelijk ;-)


Klopt... Overigens heb ik wel een glazen bol. Dus spreek niet met "wij". Ik moet zeggen, met zo'n kaars in, mooi zicht zo die bol. (sarcasme)
Gewijzigd op 15/08/2012 22:17:17 door Write Down
 
- Ariën  -
Beheerder

- Ariën -

15/08/2012 22:18:53
Quote Anchor link
Wel met opening, mag ik hopen. Anders is de zuurstof zo op....
 
Leon blabla

Leon blabla

15/08/2012 22:50:27
Quote Anchor link
Je zou de tijd waarop iemand inlogt in een Session kunnen opslaan, en op het moment dat iemand uitlogt, of als de session verbroken word, het verschil in tijd kunnen opslaan en de tijd zelf.
 
Obelix Idefix

Obelix Idefix

16/08/2012 08:03:26
Quote Anchor link
Bedenk wel dat niet iedereen netjes uitlogt maar tabblad/browser sluit.
En ingelogd wil niet zeggen dat iemand ook daadwerkelijk op de site actief is geweest.
 
Stefan WM

Stefan WM

16/08/2012 08:42:39
Quote Anchor link
Zodra iemand bijvoorbeeld de browser sluit is je javascript niet meer actief dus zul je dit nooit kunnen loggen, zoals jij het wilt werkt dit dus alleen als iemand "netjes" uitlogt.
 
Eddy E

Eddy E

16/08/2012 09:28:38
Quote Anchor link
Zoiets log je ook niet met Javascript.
Hooguit met Javascript nog even snel een pagina openen na sluiten.
Iets wat meestal als zeer irritant bevonden wordt...
 
Erwin H

Erwin H

16/08/2012 09:39:22
Quote Anchor link
Wat wel kan, is elke X minuten via een ajax call de server melden dat de betreffende persoon nog actief is (lees: pagina open heeft staan). Elke keer dat zo'n call gemaakt wordt tel je X minuten op bij de totale actieve tijd voor die persoon in de database. Als een persoon gewoon zijn browser sluit stoppen die calls en heb je dus een redelijke betrouwbare totale tijd. Niet 100% betrouwbaar want de de tijd sinds de laatste call weet je dus niet, maar als je X goed kiest is dat niet al te veel (en volgens de kansrekening kan je voor de gemiste tijd 1/2 X nemen).

Uiteraard weet je niet of iemand ook echt iets heeft gedaan op je website, maar wel dat de pagina open was.
 
Stefan WM

Stefan WM

16/08/2012 10:10:49
Quote Anchor link
Eddy Erkelens op 16/08/2012 09:28:38:
Zoiets log je ook niet met Javascript.
Hooguit met Javascript nog even snel een pagina openen na sluiten.
Iets wat meestal als zeer irritant bevonden wordt...

I know.. alleen de topic starter wilde het met javascript doen
 
Leon blabla

Leon blabla

16/08/2012 10:17:20
Quote Anchor link
Obelix en Idefix op 16/08/2012 08:03:26:
Bedenk wel dat niet iedereen netjes uitlogt maar tabblad/browser sluit.
En ingelogd wil niet zeggen dat iemand ook daadwerkelijk op de site actief is geweest.


Je zou toch gewoon een onunload function kunnen maken die op het laatste moment nog met AJAX je account netjes uitlogd.
Dan werkt het in beide gevallen.
 
Kris Peeters

Kris Peeters

16/08/2012 10:31:42
Quote Anchor link
Heb je dit laatste getest?
Ik heb vroeger niet zo goede ervaringen gehad met events waarbij het venster wordt gesloten (en dergelijke).

Misschien moet ik nog eens testen.
 
Erwin H

Erwin H

16/08/2012 10:52:50
Quote Anchor link
Onunload werkt in de meeste browsers niet is mijn ervaring. Of is in het beste geval bijzonder onbetrouwbaar.
 
Leon blabla

Leon blabla

16/08/2012 10:53:26
Quote Anchor link
Nee ik heb het eigenlijk nog niet getest, maar in theorie zou het moeten werken ;)
 
Joakim Broden

Joakim Broden

16/08/2012 10:58:14
Quote Anchor link
Als een persoon inlog maak je gewoon een query met 'UPDATE user SET Total_Activy = Total_Activy + 1 WHERE id = ID', en zodra een ingelogd persoon van pagina veranderd (dus gewoon ergens boven in je script) doe je 'UPDATE user SET last_activity = NOW() WHERE id = ID'

En waarom dit in Javascript doen?
Gewijzigd op 16/08/2012 10:59:02 door Joakim Broden
 
Kris Peeters

Kris Peeters

16/08/2012 12:45:22
Quote Anchor link
Het is inderdaad niet nodig om het via javascript te doen.

nu; lichtjes off topic:
mocht je specifiek willen weten dat de gebruiker de site heeft open staan in een tabblad, maar totaal inactief is; hier een voorbeeldje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
  if (isset($_GET['inactive'])) {
    // hier kan je de gebruiker als inactief zetten
    echo 1;
    exit;
  }

?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset=utf-8>
    <title>uitloggen na inactiviteit</title>
  </head>
  <body>
    <div id="status">actief</div>
    <div id="counter"></div>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
    <script>
      $(document).ready(function($) {
        var timer = null,  // timer object
            counter = 0,
            timerActive = true,
            interval = 1000,
            stopTime = 120;     // aantal seconden waarna het inactief wordt
        
        // een aantal events resetten de counter.  Voel je vrij om er toe te voegen
        $(window).mousemove(reset);
        $(window).click(reset);
        
        // trigger the timer when the page is loaded
        inactive ();
        
        function reset() {
          counter = 0;
        }
        
        function inactive () {
          if (counter++ >= stopTime) {
            // de gebruiker heeft al een tijd niets gedaan
            $.ajax({
              url: '?inactive=1',
              success: function(data) {
                timerActive = false;
                $('#status').html('inactief');
              }
            })
          }
          $('#counter').html(counter + ' / ' + stopTime);
          if (timerActive == true) {
            timer = setTimeout(inactive, interval);
          }
        }
      });
    </script>
  </body>
</html>


... dus ja, ik denk niet dat je hier veel aan hebt, maar je weet nooit
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.