André Laugks: Session Management

Beitrag lesen

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