Jan K.: Andere Session beenden

Hallo zusammen,

ich bastele momentan an einer Benutzerverwaltung herum und überprüfe auf inaktive Sessions.

Es finden sich Sessions die ich gerne löschen will. Im PHP Manual sind Sessionfunktionen wie -session_destroy(void)- mit dem void als Übergabeparamter angegeben, also kann ich da nix übergeben.

Ich stehe momentan auf dem Schlauch, wie kann ich andere Sessions beenden?

Gruß,
Jan

  1. Moin!

    ich bastele momentan an einer Benutzerverwaltung herum und überprüfe auf inaktive Sessions.

    Es finden sich Sessions die ich gerne löschen will. Im PHP Manual sind Sessionfunktionen wie -session_destroy(void)- mit dem void als Übergabeparamter angegeben, also kann ich da nix übergeben.

    Ich stehe momentan auf dem Schlauch, wie kann ich andere Sessions beenden?

    Sessions inaktivieren sich am schlauesten von innen heraus: Die Sessiondaten sind dann entweder durch die Garbage Collection schon gelöscht und damit weg, oder die in der Session gespeicherten Informationen (typischerweise der Zeitpunkt des letzten Zugriffs) ergeben, dass der gerade stattfindende Zugriff "inaktiv" im Sinne der von dir aufgestellten Regeln gilt, weil der letzte, in der Session gespeicherte Zeitpunkt schon zu lange zurückliegt.

    Falls sowas der Fall ist, ist vom Benutzer also eine erneute Authentifizierung einzufordern, bevor es weitergeht.

    Effekt: Keine weitere Instanz muss sich um die Prüfung der Aktivität der Sessions kümmern, das regelt sich alles von alleine. Die Existenz einer Session-ID sagt nichts über den Login-Zustand aus (sollte sie zumindest nicht, wenn du das so programmiert hast, ändere es), das ist allein Sache der in den Session-Daten gespeicherten Informationen.

    - Sven Rautenberg

    1. Hello,

      Effekt: Keine weitere Instanz muss sich um die Prüfung der Aktivität der Sessions kümmern, das regelt sich alles von alleine. Die Existenz einer Session-ID sagt nichts über den Login-Zustand aus (sollte sie zumindest nicht, wenn du das so programmiert hast, ändere es), das ist allein Sache der in den Session-Daten gespeicherten Informationen.

      @Jan K.:

      Unterscheide zwischen einem sessionbasierten Rechtesystem und einem requestbasierten Rechtesystem.

      Wenn Du Deine Applikation mit einem requestbasierten Rechtesystem ausstattest, dann wird pro Request geprüft, welche Rechte für den User eingestellt sind. Die werden zweckmäßigerweise in einer Datenbank gespeichert. Diese Vorgehensweise hat auch den Vorteil, dass man in der DB auch gelich den letzten Requestzeitpunkt speichern kann und so auch leicht das beliebte "wer ist Online"[1] realisieren kann. Außerdem ist es so möglich, dem User während seiner Session administrativ Rechte zu entziehen oder zusätzlich zu erteilen.

      Bei einem sessionsierten Rechtesystem werden üblicherweise die Rechte beim "Login" in der Session gespeichert und gelten dann solagen, wie die Session gültig ist.

      [1] es kann so durch eine einfache Abfrage festgestellt werden, welche User innerhalb eines gewissen Zeitfensters Requests abgesetzt haben. Ob sie noch weitere Requests absetzen werden, kann das System nicht wissen. Es gibt bei HTTP kein echtes "Online".

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de