Sven Rautenberg: PHPSESSID vorhanden? Warum?

Beitrag lesen

Moin!

Ich habe auf meiner Seite mit session_start die Session begonnen und Cookies deaktiviert. An die URL habe ich keine Parameter angehängt, die PHPSESSID wird also nicht weitergegeben, trotzdem habe ich auf allen Seiten die PHPSESSID?!

Liegt das u.U. an einer Einstellung in meiner php-info und ich habe dieses Phänomen nur lokal? Oder habe ich einen Denkfehler?

PHP fügt in alle Links (<a>, <area>) und Formulare automatisch die Session-ID als Parameter oder verstecktes Formularfeld ein. Damit ist sichergestellt, daß beim Benutzen der Links oder dem Abschicken des Formulars die Session-ID weitergereicht wird.

Auf der ersten Seite, die vom Browser abgerufen wird, wird das immer gemacht. Gleichzeitig wird noch ein Cookie gesetzt.

Auf Seite 2 kann festgestellt werden, ob ein Cookie gesetzt wurde, und dann werden die Links und Formulare nicht mehr erweitert. Andernfalls schon.

Der Befehl "session_start()" bringt dir nicht automatisch die bisherigen Variablen der Session. Dazu muß von der vorhergehenden Seite in irgendeiner Weise die bisherige Session-ID übergeben worden sein - sei es als Cookie, oder per Link oder Formular. Ohne diese Information wird einfach eine neue Session gestartet, mit neuen Variablen.

Deswegen dürfte auch klar sein, daß Cookies für Sessions besser sind: Die werden von jedem Browserfenster an den Server geschickt. Auch wenn man eines neu öffnet und die URL frisch eingibt. Bei der Parameter-Methode würde man auf diese Weise eine neue Session starten.

Du solltest dir den Quelltext deiner Seiten einfach mal genauer ansehen, zumindest die Links. :) Entweder hast du Cookies doch aktiv, oder veränderte Links.

- Sven Rautenberg