__Netscape hat seinerzeit bei der Erfindung der Cookies den einzig
sinnvollen Weg gewählt, um Cookie-Informationen zwischen Client und
Server auszutauschen, nämlich die HTTP-Header, die bei jeder Anfrage
hin und her geschickt werden:__
-
1. Ein Client fordert vom Server über eine der HTTP-Request-Methoden
eine Ressource an. Dummerweise sendet er dabei keinerlei Informationen
darüber, ob er gewillt ist Cookies zu akzeptieren, d.h. der Server
bekommt lediglich einen ‚gewöhnlichen‘ HTTP-Request
2. Der Server verarbeitet den empfangenen Request, rödelt auf die eine
oder andere Weise rum und sendet dann eine Antwort (HTTP-Response),
der mind. aus HTTP-Response-Headern besteht, i.d.R. aber auch einen
HTTP-Response-Body beinhaltet.
Will der Server Cookies an den Client übermitteln, geschieht dies
durch einen entsprechenden HTTP-Response-Header (Set-Cookie), der die
Cookie-Parameter enthält. Zu diesem Zeitpunkt weiß er nicht (s. 1.),
ob die Cookies überhaupt auf Gegenliebe stoßen werden. Aus diesem
Grund versorgt er vorsorglich alle Links, Formulare etc. mit
session-IDs, sofern session.use_trans_sid aktiviert wurde.
3. Der Client empfängt den HTTP-Response und wertet seinerseits die
Response-Header aus. Stößt er dabei auf einen Set-Cookie-Header, fragt
er je nach Einstellung den User, ob er diese(n) Cookie(s) annehmen
soll oder speichert bzw. verwirft diese(n) automagisch.
4a. Wurde(n) der/die Cookie(s) von 3. angenommen, sendet der Client
bei einer erneuten Anfrage an den selben Server anders als bei 1.
zusätzlich noch die gespeicherten Cookie-Werte an den Server,
ebenfalls als Teil der HTTP-(Request-)Header. Dies geschieht immer
automatisch und läßt sich nicht fallweise unterbinden.
4b. Hat der User keine Cookies akzeptiert, geht es bei 1. wieder los
und wiederholt sich solange, bis der User Cookies akzeptiert, sich die
Kugel gibt oder der Client von sich aus erkennt, daß der User diese
Cookies von dieser Site nicht annehmen möchte (s. Mozilla).
5. Erst jetzt erhält der Server die Information, daß die Cookies
akzeptiert wurden und gibt diese Informationen an PHP weiter ($_COOKIE
wird gefüllt). PHP seinerseits weiß nun, daß Cookies akzeptiert werden
und verzichtet von nun an auf die Nutzung von trans_sid. Dieses
Verhalten bleibt solange bestehen, bis die Cookies auf dem Client
gelöscht werden, sei es durch schließen des Browsers oder durch
explizites löschen der Cookies (s. Mozilla Cookie Manager).