Streamer: Session Management

Ich habe ein grosses Problem mit dem Session Management! Ich habe schon alles mögliche dazu gelesen bin mir aber nicht sicher ob ich alles richtig mache...
Im Grunde rufe ich auf jeder Seite session_start() auf um die Session fortzuführen, welche begonnen wurde, als sich der User auf der Portalseite eingeloggt hat!

Mein Problem ist aber, wenn der User den Browser schließt ist die Session weg! Ich dachte ich könnte Sessions fortführen, wenn der User wiederkommt!? Das ist doch der eigentliche Nutzen...
PHP müssste doch nun selbständig den beim letzten Mal angelegten Session-Cookie erkennen und beim ersten Session-start() die alte Session fortführen oder nicht?

Was mache ich falsch? Bin für jede Hilfe dankbar!

  1. Hallo!

    Im Grunde rufe ich auf jeder Seite session_start() auf um die Session fortzuführen, welche begonnen wurde, als sich der User auf der Portalseite eingeloggt hat!

    Ja!
    Du hast zwei Möglichkeiten die Session-Id zu transportieren. Entweder über ein Cookie oder über GET/(POST). Beides sollte verwendet werden, falls Cookies deaktiviert sind, z.B. über die Konstante SID, wenn "session-use-trans" nicht mit installiert wurde.

    Mein Problem ist aber, wenn der User den Browser schließt ist die Session weg! Ich dachte ich könnte Sessions fortführen, wenn der User wiederkommt!? Das ist doch der eigentliche Nutzen...

    Nee, das siehst Du falsch! Ein Session sollte nur für die Sitzung gelten. Aber das ist wohl vielleicht auch eine persönliche Sache, je nach Anwendung

    PHP müssste doch nun selbständig den beim letzten Mal angelegten Session-Cookie erkennen und beim ersten Session-start() die alte Session fortführen oder nicht?

    Der Cookie existiert nicht mehr, weil i.d.R die Lebensdauer des Cookies auf 0 gesetzt ist. Dies bedeutet, der Cookie wird im RAM gehalten und bei schließen des Browsers gelöscht.

    Was mache ich falsch? Bin für jede Hilfe dankbar!

    Du setzt die Lebensdauer des Cookies hoch: session_set_cookie_params()
    http://www.php.net/manual/de/function.session-set-cookie-params.php

    Dann mußt Du aber auch dafür sorgen, das die Lebensdauer der Sessiondatei herauf gesetzt wird. (php.ini -> session.gc_maxlifetime) Das kannst Du nur direkt in der php.ini einstellen. Eventuell kannst Du das auch mit ini_set() http://www.php.net/manual/en/function.ini-set.php machen. Gut möglich, das Du session.gc_maxlifetime nicht über ini_set() beeinflussen kannst. Weil es IMHO eine globale Einstellung ist. Viieleicht geht es, wenn Du für die session-Dateien ein eigenes Verzeichnis anlegst und dort drin alle Session_datein ablegst (session_save_path http://www.php.net/manual/de/function.session-save-path.php). Da wird wohl dann die "garbage collection" nicht hinkommen. Du mußt Dich dann aber selbstständig um das löschen veralteter Session-Dateien kümmern.

    --> http://www.php.net/manual/de/ref.session.php

    MfG, André Laugks