Logout - automatisch

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Logout - automatisch

    Also,

    hab da mal eine Frage. Kann mir da mal einer einen Ansatz oder gar eine Lösung nennen?
    Und zwar ist es das leidige Thema des UserManagement:

    Ich hab ein Login, bei dem neben der Abfrage für Nutzer und Passwort,
    noch eine Funktion eines Updates für 'Last Login', 'SID' und 'online'...

    Sieht aus wie folgt:

    PHP:

    mysql_query('UPDATE
    `xjonx_user`
    SET `last` = NOW(), `sid` = ''.$_SESSION['sid'].'', `online` = '1'
    WHERE `id` = '.$_SESSION['id'].' ;') ;



    Zur funktion, für die den es nicht ganz klar ist:

    last = last login - damit im Profil eben genau dieser angezeigt wird.
    online = wird auf 1 gesetzt, damit angezeigt wird, das der nutzer online ist

    und genau da fängt das problem an // da fängt die frage an:

    Das online = 1 wird beim logout auf 0 gesetzt.
    Aber, was wenn der Nutzer sich nicht ausloggt?
    Dann würde zwar der Nutzer nach dem Standard verfall der Session
    sich wieder einloggen müssen - aber er würde noch weiter auf
    der Seite als Online angezeigt werden...

    Kann mir da jmd weiter helfen?
    Design & Coding with a breeze of madness at xjonx

  • #2
    setzt ein updatefeld mit rein timestamp
    und wenn der user zb 5min keine aktivität gemacht hat gillt er als offline...

    Kommentar


    • #3
      ok danke für diesen ansatz. stellt natürlicj auch meine frage nen bissle.

      es geht ja eigentlich nicht unbedingt um den logout. sondern um die
      online - offline anzeige eines user...

      PHP-Code:
      $online_user mysql_query
      ("SELECT id, name FROM xjonx_user WHERE last > (NOW(), 5 MINUTES) ;"); 
      das war mein ansatz. der bringt nur nicht weiter, weil er nicht funzt...

      PHP-Code:
      WHERE last DATE_SUB(NOW(), INTERVAL 5 minutes
      läuft auch irgendwie nicht...
      Zuletzt geändert von xJonx; 06.05.2006, 01:02.
      Design & Coding with a breeze of madness at xjonx

      Kommentar


      • #4
        PHP-Code:
        $online_user mysql_query
        ("SELECT id, name FROM xjonx_user WHERE UNIX_TIMESTAMP(DATE_ADD(last, INTERVAL 5 MINUTES)) > UNIX_TIMESTAMP(NOW()) ;"); 
        versuch das mal so... weil die unix-timestamps kann man direkt mit < oder > vergleichen

        Kommentar


        • #5
          frage bevor ich es teste... das feld 'last' wir NOW() gefüttert... passt das dann mit dem Timestamp?
          Design & Coding with a breeze of madness at xjonx

          Kommentar


          • #6
            getestet - läuft nicht: gibt einfach keine ausgabe...
            Design & Coding with a breeze of madness at xjonx

            Kommentar


            • #7
              Ist 'last' auch vom Typ datetime?

              Die Datumsfunktionen von MySQL kann man auf alle Datumsfelder anwenden. UNIX_TIMESTAMP ist also quatsch

              Ausserdem muss es glaub ich "minute" anstatt "minutes"heißen.

              http://dev.mysql.com/doc/refman/5.0/...functions.html

              Code:
              SELECT * FROM tab1 WHERE last > DATE_SUB(NOW(), INTERVAL 5 MINUTE);

              Kommentar


              • #8
                ja ist und hat gefunzt. Danke euch!
                Design & Coding with a breeze of madness at xjonx

                Kommentar

                Lädt...
                X