PHPSESSID vorhanden? Warum?
Sabine
- php
Hallo und guten Morgen!
Irgendwie machen die Sessions mit mir was sie wollen - zur Zeit in positiver Erscheinung, interessieren würde mich nur warum ...
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?! Ich habe zwar gelesen, dass die Variablen die ich über die Session definiere global vorhanden sind, trotzdem erstaunt mich das, denn wenn es so funktioniert auch bei deaktivierten Cookies brauche ich die PHPSESSID ja gar nicht weitergeben (siehe mein Posting von gestern bezüglich Sicherheitsbedenken http://forum.de.selfhtml.org/?m=64218&t=11582)
Liegt das u.U. an einer Einstellung in meiner php-info und ich habe dieses Phänomen nur lokal? Oder habe ich einen Denkfehler?
Schöne Grüße
Sabine
Hallo nochmals!
Eines habe ich noch vergessen, Opera 5 z.B. legt mir trotz deaktivierter Cookies im tmp-Verzeichnis das Session-Cookie an. Warum denn das?
Danke im Voraus für alle Antworten und Anregungen!
Schöne Grüße
Sabine
hi,
Irgendwie machen die Sessions mit mir was sie wollen
kenn ich irgendwo her :-)
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?!
Wenn du am anfang der seite immer session_start() eingibst hast du dort auch die sessionvariablen zur verfügugn
Ich habe zwar gelesen, dass die Variablen die ich über die Session definiere global vorhanden sind, trotzdem erstaunt mich das, denn wenn es so funktioniert auch bei deaktivierten Cookies brauche ich die PHPSESSID ja gar nicht weitergeben
Sessions haben nichts mit cookies zu tun. In einer session speicherst du variablen, die session datei liegt auf deinem webserver. cookies werden aber lokal auf deinem rechner abgelegt.
gruss
ralf
Hallo Ralf!
hi,
Irgendwie machen die Sessions mit mir was sie wollen
kenn ich irgendwo her :-)
Beruhigend, dass die nicht nur mich quälen :)
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?!
Wenn du am anfang der seite immer session_start() eingibst hast du dort auch die sessionvariablen zur verfügugn
Hab ich aber nicht - ich habe nur auf der ersten Seite session_start() und dann nix mehr - wenn ich aber auf der nächsten echo $PHPSESSID; eingebe kommt ganz brav meine Session-ID. Ausser vielleicht: Die Seite ist realisiert als Frameset und in der Frameset-Datei habe ich die Session registriert - liegts vielleicht daran? Da ja die Frameset-Datei geladen bleibt?
Ich habe zwar gelesen, dass die Variablen die ich über die Session definiere global vorhanden sind, trotzdem erstaunt mich das, denn wenn es so funktioniert auch bei deaktivierten Cookies brauche ich die PHPSESSID ja gar nicht weitergeben
Sessions haben nichts mit cookies zu tun. In einer session speicherst du variablen, die session datei liegt auf deinem webserver. cookies werden aber lokal auf deinem rechner abgelegt.
Jetzt verwirrst du mich aber restlos - bisher habe ich immer gelesen, dass PHP standardmäßig, wenn ich die Session starte, versucht ein Session-Cookie zu setzen (und es bei mir auch tut, wenn Cookies aktiviert sind!), wenn Cookies deaktivert sind, kann man die Session-ID über SID an die URL angehängt weitergeben. Das Sessions grundsätzlich am Server ablaufen und Cookies beim Client gespeichert werden ist mir schon klar, trotzdem dachte ich bis vor 2 Sekunden nach meinem bisherigen Infostand, dass session_start in PHP mit Cookies zusammenhängt.
Liebe Grüße
Sabine
gruss
ralf
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
Hallo Sven!
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.
Ja, so hätte ich es mir auch gedacht - wie gesagt, ich habe auch nur in der Frameset-Datei = Index-Datei den Aufruf session_start(); und sonst nicht mehr, trotzdem habe ich meine PHPSESSID - auf der ersten aufgerufenen Seite und auch beim Weitergehen, egal ob ich Cookies aktiviert oder deaktivert habe
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.
Ja, ist klar - dies war auch mein ursprüngliches Problem, dass ich nicht zufällig 2 "gleiche Benutzer" habe - sprich die die gleiche PHPSESSID angehängt in die Adresszeile eingeben, ob böswillig oder zufällig. Umso erfreuter oder erstaunter war ich, dass bei meinem Test die PHPSESSID nirgends aufscheint und doch da ist ...
Du solltest dir den Quelltext deiner Seiten einfach mal genauer ansehen, zumindest die Links. :) Entweder hast du Cookies doch aktiv, oder veränderte Links.
Also Cookies habe ich sicher nicht aktiv, mein tmp-Verzeichnis (genauer die Inhalte) habe ich gelöscht und bis auf Opera der mein - keine Cookies akzeptieren - ignoriert legt kein Browser was ab. Aber auch an die Links habe ich nichts angehängt. Wenn ich die Eigenschaften meiner Seiten anzeige ist auch keine PHPSESSID vorhanden. Also kanns eigentlich mal nicht über get kommen. Und über hidden-field gehts ja auch nicht (kann ja die Variable nicht über ein Hidden-Field vom Frameset aus in eine Frameseite übergeben, oder?)
Ich versteh das nicht ...
Liebe Grüße
Sabine
- Sven Rautenberg
Halli Hallo!
Um meine restlose Verwirrung noch zu steigern habe ich jetzt mal wieder das Browserfenster geschlossen und die Seite nochmals aufgerufen - und siehe da im tmp-Verzeichnis liegt nun ein Session-Cookie. Aha denk ich mir - hatte Sven also doch recht - schau in die Internetoptionen (IE 6.0) und hier scheint auf "Alle Cookies sperren", so wie ich es ja auch wollte - aber warum legt der mir dann trotzdem das Session-Cookie ab??
Schöne Grüße
Sabine
Halli Hallo!
Um meine restlose Verwirrung noch zu steigern habe ich jetzt mal wieder das Browserfenster geschlossen und die Seite nochmals aufgerufen - und siehe da im tmp-Verzeichnis liegt nun ein Session-Cookie. Aha denk ich mir - hatte Sven also doch recht - schau in die Internetoptionen (IE 6.0) und hier scheint auf "Alle Cookies sperren", so wie ich es ja auch wollte - aber warum legt der mir dann trotzdem das Session-Cookie ab??
Was der IE macht, kann ich nicht sagen. Dem mißtraue ich grundsätzlich.
Aber was Opera angeht, da kann ich dir nur empfehlen, die Cookie-Einstellungen mal zu ändern:
"Display Received Cookies"
"Accept from all servers"
Damit kriegst du mit, welche Cookies von Servern gesetzt werden sollen. Und wenn du "Refuse" klickst, wird der Cookie nicht gesetzt. 100% nicht! Das haben meine Tests mit Opera und Sessions ergeben, und darauf verlasse ich mich.
Und noch ein PS: Netscape setzt die Cookies nicht in dein TMP-Verzeichnis, sondern in eine Datei "cookies.txt" in irgendeinem Netscape-Verzeichnis. Jedenfalls Netscape 4. Bei Mozilla hab ich noch nicht nachgesehen, aber warum sollte das anders sein?
- Sven Rautenberg
Hallo Sven!
Was der IE macht, kann ich nicht sagen. Dem mißtraue ich grundsätzlich.
Aber was Opera angeht, da kann ich dir nur empfehlen, die Cookie-Einstellungen mal zu ändern:
"Display Received Cookies"
"Accept from all servers"
Damit kriegst du mit, welche Cookies von Servern gesetzt werden sollen. Und wenn du "Refuse" klickst, wird der Cookie nicht gesetzt. 100% nicht! Das haben meine Tests mit Opera und Sessions ergeben, und darauf verlasse ich mich.
Das habe ich gemacht - und du hattest Recht - Cookie wurde zwar gesetzt, aber auf der nächsten Seite wurde nicht mehr damit gearbeitet.
Netscape macht es ebenso, nur beim IE alles wie gehabt ...
Vielleicht komme ich da noch drauf, warum der es tut, mal schauen. Hauptsache ich weiß, dass es normal so funktioniert, wie es auch sein sollte.
Besten Dank für die Hilfe und schöne Grüße
Sabine