SESSION für lange Zeit speichern

Bobo2040

Mitglied
HI :D
Ich habe ein Problem und zwar ich habe ne Website geschrieben in PHP und da wird mit SESSION s gearbeitet,
aber wenn man sich einloggt und z.b. die Seite verlässt, dann wird die Session gelöscht so und nun zu meiner Frage..
Wie kann ich den Sessions eine "Lebenszeit" geben ?

PS: Im netz standen nur sachen wie man es mit *.inc datein macht.. und ich kann des nocoh nicht so gut und arbeite nicht mit *.inc datein

MFg Bobo2040
 
Naja, an sich geht das nicht. Du kannst nur ein Cookie so setzen, dass es zu einem Zeitpunkt verfällt, der weit in der Zukunft liegt (beispielsweise in einem Jahr, oder zehn Jahren). Somit erreichst du letztendlich, dass das Cookie praktisch nie verfällt.
 
Ja genau das will ich machen :D aber warum geht das nicht mit sessions... und 2. frage wie setze ich in php cookies und wie gebe ich ihnen eine Lebensdauer
 
aber warum geht das nicht mit sessions...

Um deine Frage zu beantworten: Eine Session ist immer an die Browser-Laufzeit gebunden. Schließt du den Browser, gibst du auch evtl. offene Sessions an Webservern "frei", zu mindest aus Sicht des Browsers.

Es funktioniert so:

Session ist auch auf einem Cookie aufgebaut, dieses Cookie ist für die Dauer der Öffnung des Browsers oder der sog. session.cookie_lifetime (php.ini => http://www.php.net/manual/de/session.configuration.php#ini.session.cookie-lifetime) gültig. Immer wenn dein Browser eine Verbindung zu einem Webserver aufbaut, der Session verwendet, wird dieses Session-Cookie mit an den Server gesendet. Darüber identifiziert der Webserver die Session in seinem Datei-System (oder einem anderen Persistenz-Medium).

Ist auf dem Server die Sitzung abgelaufen, wird das dem Browser mitgeteilt, der das Sitzungs-Cookie vernichtet und damit die Session selbst zerstört. Ein erneuter Zugriff wird eine neue Sitzung erstellen und das Session-Cookie erneut an den Browser senden. Da es sich dabei um Handlungen zwischen Browser und Webserver handelt, wird das ganze in den HTTP-Headern erledigt, und das ist auch der Grund, warum session_start() vor allen Ausgaben (echo, print, etc.) ausgeführt werden muss.

So in etwa läuft das ab.
 
OKay gut danke :D ich guck mir den Link mal an :D

EDIT:
Hab mir den Link angeguckt.. und das heist jetzt, das ich alles komplett neu machen muss, also da wo ich sessions benutzt habe -.-' oder wie?
Und 2. wozu braucht man dann sessions ? macht für mich keinen sinn, also sessions zu benutzen, obwohl die sehr schnell wegsind
 
Zuletzt bearbeitet:
Die Sessions brauchst du wenn ein Login hast ohne die "Angemeldet bleiden" funktion, die sessions verfalls Zeit beginnt erst ab der letzte Aktivität, bei mir sind es 180min. Du kannst beim login die Cookies schreiben und dann im Header mit request eine Datei einbinden wo die Cookies in Variable gespeichert werden. So musst du nur $username schreiben anstatt $_COOKIE["username"]. Bessere über sicht schluss endlich.
 
Naja, Sessions setzt man ein, wenn man nicht mit Cookies arbeiten will, weil es Benutzer geben könnte, die Cookies verweigern. Ein Session-Cookie verhält sich nur wie ein Cookie ist aber streng genommen keines.

Außerdem will man evtl. genau das beschriebene Verhalten erreichen: Angenommen du baust eine Webapplikation, die z.B. Nachrichten-Austausch über HTTP ermöglicht (z.B. hier im Forum oder meinethalben in sozialen Netzwerken wie Facebook). Dann geht ein Benutzer deiner Applikation im Internet-Cafe auf die Seite, loggt sich ein, schaut seine Nachrichten an, schreibt welche und schließt den Browser, ohne sich auszuloggen. Dann kommt der nächste Benutzer und kann schwupps die Nachrichten des ersten Benutzers lesen.

Sinn erkannt? ;-)
 
Zurück