Session nach bestimmter Zeit löschen

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

  • #16
    ... hatte schon schlimmere...

    naja, ob die sessionID bei Hppay in der DB stehen bleibt oder nicht, ist imho aber völlig uninteressant! Schließlich kannst du ja nichts mehr damit anfangen.

    Kommentar


    • #17
      script

      du benützt also das script von mrhappiness und willst dazu eine function einbauen, dass der Benutzer nach einer bestimmten Zeit, ähm, "ausgeloggt wird"

      das ist kein Problem, denn vor dem Problem stand ich auch, und ich habs so gelöst: (ich wende das nun auf das Script von mrhappiness an - bei mir ist der Aufbau etwas anders, aber ich denke, dass es klappen dürfte)

      1. erstelle eine neue Spalte in deiner "user"-Tabelle - ich hab sie "actiontime" genannt (setzte sie als standard auf null)

      2. mach die sessionshelpers.inc. php auf
      und ändere folgende Dinge:

      a) bei login()
      PHP-Code:
      $sql="UPDATE TABELLENNAME SET UserSession='".session_id()."', actiontime=$zeit WHERE UserId=".$userid
      b) bei logout()
      PHP-Code:
      $sql="UPDATE TABELLENNAME SET UserSession=NULL, actiontime=NULL WHERE UserSession='".session_id()."'"
      c) setze diese neue Funktion ein:

      PHP-Code:
      function time_check()
      {
          
      // Eingeloggt?
          
      if (logged_in())
          {
              
      //Momentane Zeit (in Sekunden seit dem 01.01.1970)
              
      $zeit time();
              
      //Nach welcher Zeit soll ausgeloggt werden? (in Sekunden) hier 1 Stunde
              
      $auslogg 3600;
              
      // Abfrage der Uhrzeit der letzten Aktion
              
      $sql "SELECT actiontime FROM TABELLENNAME WHERE UserSession='".session_id()."'";
              
      // Abrage seden
              
      $res mysql_query($sql);
              
      // Ergebnis in Variable speichern
              
      $erg mysql_result($res0"actiontime");
              
      // Neue Zeit - alte Zeit = Differenz
              
      $grenze $zeit $erg;
              
      // Eigentlich Funktion, wenn die letzte Aktion länger als 1 Stunden her war -> ausloggen
              
      if ($grenze $auslogglogout();
              
      // Ansonsten die "Aktionszeit" auf den neusten Stand bringen
              
      else
              { 
                  
      $sql "UPDATE TABELLENNAME SET actiontime=$zeit WHERE UserSession='".session_id()."'";
                  
      mysql_query($sql);
              }
          }

      d) füge bei der login.php, nach

      PHP-Code:
      include 'sessionhelpers.inc.php'
      PHP-Code:
      time_check(); 
      ein.

      Vergiss net, bei c) time_check() anstatt "TABELLENNAME" den Namen deiner MySQL-Tabelle einzutragen...

      Ein DANK(!!!) noch an mrhappiness, ich benütz sein Script in veränderter Form, klappt 1a!

      adios ;-)
      Zuletzt geändert von damonn; 16.02.2005, 22:13.

      Kommentar


      • #18
        Es gibt auch was das heisst das heisst javascript!!!
        ==> "Onunload"
        ....

        Kommentar


        • #19
          onunload ist aber unnötig, weil wenn der User die Seite schließt rennt die session - wie gesagt - ca. 25min weiter, bevor sie gelöscht wird.

          Es geht wahrscheinlich darum, ein "Who is online?" zu machen, stimmts?
          [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

          Kommentar


          • #20
            ihr macht das für meinen geschmack zu kompliziert.

            ich speichere einfach den timestamp + ner gewissen Zeit in der Session selbst.
            Und auf jeder seite wird dann mittels includierten if-abfrage überprüft ob der timestamp in der session >= dem aktuellen timestamp ist.
            wenn er noch größer ist wird er verlängert ansonsten wird die session zerstört.

            funktioniert auch einwandfrei

            Kommentar

            Lädt...
            X