phpbar.de logo

Mailinglisten-Archive

[php] session wirklich beenden

[php] session wirklich beenden

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Mai 4 11:26:21 CEST 2006


Hi Michael,

Am Donnerstag, 4. Mai 2006 11:16 schrieb Michael Borchers:
> mein login skript (via HTTP AUTH mit $_SERVER["PHP_AUTH_USER"] etc.)
> registriert eine session namens users_id
>
> beim logout wird die sessionId, die in einer db gespeichert wird, aus
> der db gelöscht.
>
> ausserdem gibt es ein unset auf alle sessionvariablen, dann noch
> session_unset UND session_destroy.
>
> bleibt das browserfenster nun offen und ich begebe mich wieder auf
> den geschützten bereich, erfolgt die loginabfrage
> if(session_is_registered(users_id)) ... LOGIN OK
>
> und leider bleibt der login bestehen, da die session immer noch zu
> existieren scheint.
>
> natürlich ändert sich das, wenn ich das browserfenster nach dem
> logout schliesse.
>
> wurde nun die session doch nicht richtig zerstört oder ist das
> typisch browserfenster?!
>
> ps:
> kein SSL, htaccess login maske merkt sich nicht die daten

ok, Du hast hier zwei getrennte Dinge:

	1. Die Anmeldung über HTTP_AUTH
	2. Die Session

Ich betone noch mal: Es sind zwei *getrennte* Dinge.

Wenn Du Dich einmal mit HTTP_AUTH beim Server angemeldet hast, sendet 
der Browser diese Daten solange mit, wie Du das Browserfenster nicht 
schließt. Erst wenn Du das Fenster geschlossen hast, verliert der 
Browser die Logindaten.

Soweit hat das Ganze noch nichts mit der Session zu tun.

Du gehst nun hin und startest auf Basis des am Server angemeldeten 
Nutzers eine Session. Wenn Du nun die Session beendest, ist zwar die 
Session weg, eine Auswirkung auf die Benutzeranmeldung hat dieses 
jedoch natürlich nicht, den das wird direkt zwischen Browser und Server 
geregelt.

Daher passiert dann folgendes, wenn Du die Session beendet hast, das 
Browserfenster aber aufgeblieben ist: Es wird eine *neue* Session 
geöffnet. Prüfe das mal in Deiner Datenbank, aber so muß es sein.

Wenn Du möchtest, daß nicht nur die Session beendet, sondern auch der 
Benutzer abgemeldet wird, dann mußt Du die Anmeldung entweder direkt in 
die Session integrieren oder Dich z.B. darauf verlassen, daß der 
Anwender Javascript zuläßt und versuchen, beim Beenden der Session mit 
Javascript auch das Fenster zu schließen.


Viele Grüße

Lutz

php::bar PHP Wiki   -   Listenarchive