dave: Sessions: Time-Out Funktion realisieren?

Hallo,

in einem anderen Thread wurde ich drauf angesprochen... ich habe in meinem Kundenlogin (mit Sessions realisiert) keine Time-Out Funktion.

Vielleicht ist es wirklich besser, wenn ich versuche eine einzubauen. Hat dazu denn jemand ein paar Realisierungstipps? Bin relativ neu im Bereich PHP und wüsste jetzt nicht, wie man sowas realisieren kann.

Grüsse
Dave

  1. in einem anderen Thread wurde ich drauf angesprochen... ich habe in meinem Kundenlogin (mit Sessions realisiert) keine Time-Out Funktion.

    Vielleicht ist es wirklich besser, wenn ich versuche eine einzubauen. Hat dazu denn jemand ein paar Realisierungstipps? Bin relativ neu im Bereich PHP und wüsste jetzt nicht, wie man sowas realisieren kann.

    Machst ne Session-Variable $timeout.
    Schreibst Du den Timeout-Zeitpunkt rein.
    Vergleichst Du auf jeder Seite den Inhalt von $timeout mit der aktuellen Zeit; wenn kleiner, killst Du die Session.

    Für einen Idle-Timeout (N Minuten ohne Seitenaufruf) packst Du stattdessen "jetzt + 5 Minuten" rein und vergleichst das auf jeder Seite mit der aktuellen Zeit; wenn kleiner, killst Du die Session, wenn größer, setzt Du sie wieder neu auf "jetzt + 5 Minuten".

  2. Hallo,

    in einem anderen Thread wurde ich drauf angesprochen... ich habe in meinem Kundenlogin (mit Sessions realisiert) keine Time-Out Funktion.

    Vielleicht ist es wirklich besser, wenn ich versuche eine einzubauen. Hat dazu denn jemand ein paar Realisierungstipps? Bin relativ neu im Bereich PHP und wüsste jetzt nicht, wie man sowas realisieren kann.

    Grüsse
    Dave

    Hi,

    Welche Möglichkeiten hast Du denn? Kommst Du an die php.ini ran?

    Normalerweise gibt es ein eingebautes Session-Timeout in PHP. Die entsprechenden Parts aus der INI-Datei sehen in etwa so aus:

    [Session]
    session.save_handler = files
    session.save_path = H:/sessions
    session.use_cookies = 1
    session.name = PHPSESSID
    session.auto_start = 0
    session.cookie_lifetime = 0    ; Hier entsprechendes eintragen
    session.cookie_path = /
    session.cookie_domain =
    session.serialize_handler = php
    session.gc_probability = 1
    session.gc_maxlifetime = 1440
    session.referer_check =
    session.entropy_length = 0
    session.entropy_file =
    ;session.entropy_length = 16
    ;session.entropy_file = /dev/urandom
    session.cache_limiter = nocache
    session.cache_expire = 180
    session.use_trans_sid = 1

    Der Ausschnitt stammt aus einer bearbeiteten INI und es kann Sein, das Deine Einstellungen davon abwechen. Wichtig wäre zunächst mal die markierte Zeile.

    Ich hoffe, das Dir das weiterhilft.

    gruß

    Axel

    1. Hi,

      Ergänzung:

      [Session]
      session.save_handler = files
      session.save_path = H:/sessions
      session.use_cookies = 1
      session.name = PHPSESSID
      session.auto_start = 0
      session.cookie_lifetime = 0    ; Hier entsprechendes eintragen
      session.cookie_path = /
      session.cookie_domain =
      session.serialize_handler = php
      session.gc_probability = 1
      session.gc_maxlifetime = 1440 ; Hier natürlich auch - sorry.
      session.referer_check =
      session.entropy_length = 0
      session.entropy_file =
      ;session.entropy_length = 16
      ;session.entropy_file = /dev/urandom
      session.cache_limiter = nocache
      session.cache_expire = 180 ; Und hier...
      session.use_trans_sid = 1

      gruß

      Axel

    2. Moin!
      Und wenn Du nicht an die php.ini kannst, könnte Dir folgende Funktion helfen: http://www.php.net/manual/de/function.ini-set.php, hiermit kannst Du für die Laufzeit eines Scriptes Einstellungen der php.ini überschreiben.
      Wenn PHP als Apache-Modul installiert ist geht es außerdem noch über htaccess.
      Wobei Mulders Lösung vollkommen reicht - wäre ich nie drauf gekommen... gute Idee!
      ;-)

      Grüße
      Andreas