Punkte vergeben !

DjGorilla

Grünschnabel
Hi also ich hab nen Normales Login System am laufen mit Sessions!

Das ganze läuft auch schon mit Timestamps zum schauen ob der User noch da ist oder nicht ( für die Online liste sonst gibts ja nur leichen ).

Nun möchte ich aber jedem User für jede Minute die er online ist 1 Punkt auf sein konto knallen.

Hat wer ne lösung / idee ?
 
In die Datenbank immer den aktuellen Timestamp speicher, wenn der User ein
Script aufruft.

Wenn die Differenz zum vorhergehenden nicht zu groß ist (z.B. >10 Minuten),
dann die Minuten daraus errechnen und die Punkte erhöhen.

Beispiel:
Code:
$iResult   = mysql_query("SELECT `lastactivity`
                          FROM `users`
                          WHERE `id`='".$_SESSION['UserId']."';");
$aActivity = mysql_fetch_array($iResult);
$iLastAct  = (int)$aActivity['lastactivity'];
$iNow      = time();

if (($iLastAct != 0) && ($iLastAct > $iNow - 900)) {
    mysql_query("UPDATE `users`
                 SET
                     `lastactivity` = ".(int)$iNow.",
                     `points`       = `points` + ".(int)(($iNow - $iLastAct) / 60)."
                 WHERE `id` = ".(int)$_SESSION['UserId'].";");
}
So, oder so ähnlich könnte es aussehen.
 
ich denke nicht das es funktioniert weil den timestamp wird bei jedem aufruf auf der seite ja neu gesetzt. Die ganze seite läuft ja ohne frames sprich der user wird alle 5 - 10 sek nen neuen timestamp setzen
 
Bastel dir einfach einen 1x1 px großen Iframe und lade da jede Sekunde ein Script neu, welches die MySQL Daten aktualisiert.
Dann hast du es in realer Zeit.

Das ist mit Sicherheit nicht die elegante Methode, aber sie funktioniert(hab ich irgendwo schonmal getestet).
 
Oder du könntest nach dem "15-Minuten Kriterium" eine Session-Variable nach
dem Timestamp erhöhen und diese, wenn es so weit ist (sprich, eine Minute ver-
gangen ist) die Punkte erhöhen.

Also:
$sess ist die Session-Variable, in der die zeit gespeichert ist, die der User
gerade auf der Seite verbracht hat.
lastactivity ist der Eintrag aus der Datenbank.
Code:
        +---------------------+
        | User ruft Seite auf |
        +---------+-----------+
                  |
        +---------+-----------+
        | lastactivity älter  |
        | als 15 Minuten?     |
        +---+-------------+---+
           /               \
         Ja               Nein
         /                   \
 +------+-----------+     +---+--------------------+
 | Timestamp ver-   |     | time() - $lastactivity |
 | werfen, bzw.     |     | zur Session-Variable   |
 | ~5 Minuten zu    |     | dazu zählen            |
 | $sess dazuzählen |     +-----+------------------+
 +------+-----------+          /
         \                    /
          \                  /
           \                /
        +---+--------------+------|
        | Session-Variable aus-   |
        | werten.                 |
        | floor($sess / 60) zu    |
        | den Punkten dazu zählen |
        | und $sess % 60 in $sess |
        | speichern.              |
        +-----------+-------------+
                    |
        +-----------+-------------+
        |   lastactivity updaten  |
        +-------------------------+
 
Zuletzt bearbeitet von einem Moderator:
Zurück