phpbar.de logo

Mailinglisten-Archive

[php] php-Sessions? (ap)

[php] php-Sessions? (ap)

Friedhelm Betz holliwell at gmx.net
Son Sep 26 18:39:31 CEST 2004


Hi Alexander,

[...]
>
> ja, ich mache es so das im LOGOFF auf jeden Fall ein GC laufen sollte
> - also wenn sich ein User mal richtig abmeldet sollte er auf jeden
> Fall laufen:

Warum? Ich wuerde, wenn ueberhaupt, den GC-Lauf beim einloggen anstossen 
lassen. Die Wahrscheinlichkeit, dass sich jemand einloggt (einloggen muss) - 
und damit ein GC-Lauf angestossen wird  - ist bestimmt hoeher, als dass sich 
jemand ordnungsgemaess abmeldet. Soll heissen, es gibt wahrscheinlich mehr 
Leute, die sich nicht ordnungsgemaess abmelden.

Problematisch sind doch nur die Leute, die sich anmelden(einloggen) und nicht 
ordnungsgemaess abmelden: diese erzeugen Sessiondaten, die auf dem Server 
liegen bleiben. Bei denen, die sich ordnungsgemaess abmelden, kannst Du doch 
session_unset bzw. $_SESSION = array(); und session_destroy() verwenden. 
Folglich sollten in Deinem session.save_path nur noch Sessiondaten liegen, 
die von Usern stammen, die sich nicht richtig ausgeloggt haben. 
Da bei jedem Einloggen auf jeden Fall ein GC-Lauf stattfindet, werden alle 
Sessiondaten, die eine atime/mtime (je nach PHP Version) > 
session.gc_maxlifetime haben, geloescht.

Der einzige Fall, dass abgelaufene/ungültige Sessiondaten rumliegen, tritt 
jetzt nur auf, wenn sich innerhalb von 24 Minuten niemand neu einloggt.

Bei dieser Variante (auf jeden Fall GC-Lauf beim Einloggen und Sessiondaten 
beim ordnungsgemaessen Abmelden) solltest Du bedenken, dass dieses Verfahren 
mit  steigender Anzahl von Leuten immer weniger perormant wird.

Ich wuerde eher nur beim ordnungsgemaessen logout die Session zerstoeren, was 
allerdings den (Performance-) Nachteil hat, wenn sich jemand ordnungsgemaess 
ausloggt und wenig spaeter wieder einloggt (ohne den Browser zu schliessen) 
das gesendete Sessioncookie ungueltig ist und eine neue Session gestartet 
wird, Wenn Du noch mehr auf Sicherheit achten musst/willst, solltest Du nach 
einem session_destroy auf jeden Fall auch das Sessioncookie loeschen (was 
nicht automatisch passiert.)

[...]
>
> Wenn ich nun feststelle das noch jemand angemeldet ist obwohl er
> nicht mehr da ist, 

Wie stelltst Du das fest? 

[...]
>
> > Typo in php.ini?
>
> Typo?

meint Tippfehler

> > Session-relevanter Auszug von php.ini?
>
> So wie ich das sehe alles auf default?

sieht so aus ;-)

Gruesse
Friedhelm

php::bar PHP Wiki   -   Listenarchive