Online Timeout

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

  • Online Timeout

    Also, ich versuche mich diesmal klar und deutlich auszudrücken...

    Ich habe eine Login-Klasse, die mit dem Konstruktor auf jeder Seite überprüft, wann der User das letzte mal eine Aktion gestartet hat, d.h. einen Link aufgerufen oder ein Formular abgeschickt hat. Aber irgendwie setzt der den Online-Status nicht wieder zurück auf 0...

    PHP-Code:
    <?php

    //Hier die Funktion (Ausschnitt aus der Klasse)

             
    public function Timeout($Table)
                    {
                    
    $qry_user $this->DB->SelectOne("SELECT LastAction FROM ".$Table.
    WHERE UserSession='"
    .session_id()."' 
    LIMIT 1"
    );
                    
    $lastaction date("H.i.d.m.y");
                    if ( empty (
    $qry_user['LastAction']) )
                     {
                     
    $udt_user $this->DB->Query("UPDATE ".$Table." SET LastAction='".$lastaction."', 
    UserStatus='0', 
    UserSession=NULL 
    WHERE UserSession='"
    .session_id."'");
                     }
                    if ( !empty (
    $qry_user['LastAction']) )
                     {
                     
    $lastaction explode(".",$qry_user['LastAction']);

                     
    $stunde $lastaction[0]; //Teil 1
                     
    $minute $lastaction[1]; //Teil 2
                     
    $tag $lastacion[2]; //Teil 3
                     
    $monat $lastaction[3]; //Teil 4
                     
    $jahr $lastaction[4]; //Teil 5

                     
    $now_stunde date("H");
                     
    $now_minute date("i");
                     
    $now_tag date("d");
                     
    $now_monat date("m");
                     
    $now_jahr date("y");

                     if (
    $now_jahr $jahr OR 
    $now_monat $monat OR 
    $now_tag $tag OR 
    $now_stunde $stunde 
    OR ($now_minute 1) > $minute )
                      {
                      
    $result $this->DB->Query("UPDATE ".$Table." SET UserStatus='0', 
    UserSession=NULL 
    WHERE UserSession='"
    .session_id()."'");
                      return 
    true;
                      }
                     }
                    }

    ?>
    Was ist daran denn falsch? Bzw, was muss verbessert werden?
    Zuletzt geändert von NetzSchleicher; 05.01.2007, 13:13.

  • #2
    Re: Online Timeout

    Original geschrieben von NetzSchleicher

    Was ist daran denn falsch? Bzw, was muss verbessert werden?
    erstmal das hier: http://www.php-resource.de/forum/sho...threadid=50454

    Kommentar


    • #3
      Aber irgendwie setzt der den Online-Status nicht wieder zurück auf 0...
      das ist keine genaue problembeschreibung. wird denn die abfrage innerhalb dieser bedingung überhaupt ausgeführt?
      PHP-Code:
      if ($now_jahr $jahr OR $now_monat $monat OR $now_tag $tag OR $now_stunde $stunde OR ($now_minute 1) > $minute 
      und wenn ja, was ergibt dann ein
      PHP-Code:
      echo "UPDATE ".$Table." SET UserStatus='0', UserSession=NULL WHERE UserSession='".session_id()."'"
      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Die Abfrage wird ausgeführt, da ich immer mindestens 5 Minuten warte, bevor ich eine nächste Seite betrete, um die Funktion aufzurufen.

        Das echo ergibt einen gültigen Befehl und es bleiben auch keine Lücken, d.h. die Session-ID und die Tabelle werden korrekt eingesetzt.

        Kommentar


        • #5
          Bzw, was muss verbessert werden?
          Müssen ist relativ aber ich würde
          PHP-Code:
          //$lastaction als Ergebnis von time() eintragen
          //dann kannst du auf dies verzichten
          $stunde $lastaction[0]; //Teil 1
          $minute $lastaction[1]; //Teil 2
          $tag $lastacion[2]; //Teil 3
          $monat $lastaction[3]; //Teil 4
          $jahr $lastaction[4]; //Teil 5
          $now_stunde date("H");
          $now_minute date("i");
          $now_tag date("d");
          $now_monat date("m");
          $now_jahr date("y");
          //und schreibst nur noch
          if(time() - 30 $lastaction){
              
          //User hat 30 Sekunden nix gemacht. Raus mit ihm
          }else{
              
          //alles im grünen Bereich

          machen.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            OffTopic:
            und wieder mal problem -> user, lösung -> kropff


            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              ^^ Danke, hat sich erledigt. Das liebe Kropfferle hat sich von seinem Bürostuhl zu mir bewegt und debuggt.

              Kommentar

              Lädt...
              X