Dennis: Wenn der User Cookies verweigert ...

Beitrag lesen

Hi Kalle_Worms,

Okay, was genau ist eine Session?
http://de.selfhtml.org/projekt/kontrollieren.htm#begriffe
also die Arbeit von einer IP-Adresse, solange mindestens einmal pro 30 Minuten zugegriffen wird?

Eine Session ist erst mal eine Datei, die auf dem Server gespeichert wird und die Variablen (natürlich auch Arrays) enthalten kann - mal so ganz einfach gesagt.
Jede Session hat eine ID (AFAIK auch gleich der Dateiname). Wenn eine SessionID an das PHP Script übergeben wurde (wie s.u.) und es wird dann eine Session gestartet, dann können Werte in der Session abgelegt werden oder später auch wieder ausgelesen werden (das ist alles im Array $_SESSION in PHP drin).

Jetzt muss man natürlich dafür sorgen, dass die Session ID (wenn diese verloren geht, gehen auch die Daten für den Besucher verloren) immer wieder mitgegeben wird. Dass passiert so:

  • Bei starten der session versucht PHP ein Cookie zu setzen, welches die ID enthält, dass wird dann vom Browser immer wieder mitgegeben bzw. steht PHP zur Verfügung
  • Wenn kein Cookies gesetzt werden konnte, muss man an die URL's die session ID dranhängen, dass sieht dann so aus: datei.php?sessionname=sessionid - für sessionname und sessionid natürlich dann die werte. PHP kann auch selber die Session ID an alle relativen Links dranhängen, du kannst es aber auch selber machen.

Es existiert nach dem Starten der Seesion die Konstante SID. Wenn ein Cookie gesetzt wurde, dann ist diese Konstante leer, ansonsten enthält sie sessionname=sessionid, man kann diese Konstante also in Link mit einbetten:

<a href="datei.php?<?php echo SID; ?>">bla</a>

Das ist jetzt aber alles erst mal unabhängig von der IP des Users, so können also auch mehrere User mit der gleichen IP verschiedenen Sessions haben, denn jedem wird eine eigene Session gegeben und jeder hat seine eigene Session ID.

Was du natürlich machen kannst, ist selber einen IP Schutz bauen, also so ewtas, dass wenn die IP sich in einer Session ändert die Session zerstört wird oder so, dass könnte z.B. dann der Fall sein, wenn jemand meine Session ID rauskriegt und von seinem PC aus meine Session ID an die URL dranhängt.

Und wann "verliert" der PHP- Server die Session-Variablen ?

Das ist eine Einstellungssache des Servers, die man AFAIK auch mit ini_set() neu setzen kann. Du solltest dazu noch mal http://de3.php.net/manual/de/ref.session.php im PHP-Manual lesen, insbesondere session.gc-maxlifetime dürfte für dich interessant sein.

MfG, Dennis.

--
Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
Zufällige Hinweise:
------------------------
Wer die FAQ gelesen hat, ist klüger!
... und weiß wie man Links macht ;-)