Sessions & Cookies - ich blick's nicht ;-(
FrankieB
- php
Hallo,
ich habe eine Seite, die ich auch ohne die Verwendung von Cookies lauffähig haben möchte.
Die Seite basiert auf Sessions und ich gebe jedem Link (und auch jedem Formular) Name und ID der Session mit.
Warum wird trotzdem bei deaktivierten Cookies ein Cookie angefordert, obwohl das meinem Verständnis nach gar nicht notwendig wäre?
Danke für Eure Hilfe.
Grüsse
Frankie
hi,
Warum wird trotzdem bei deaktivierten Cookies ein Cookie angefordert, obwohl das meinem Verständnis nach gar nicht notwendig wäre?
weil PHP entsprechend eingestellt ist.
es wird defaultmäßig zunächst beides versucht, session-id per cookie zu übergeben, und als angehängter GET-parameter an den relativen URLs.
kommt der cookie beim nächsten request wieder mit, steig PHP auf übergabe per cookie um, wenn nicht, bleibt's bei GET.
wenn du das nicht willst, schau dir die konfigurationsoptionen für sessions an. wenn du session.use_cookies deaktivierst, verzichtet PHP auf den versuch, beim ersten starten der session ein cookie zu setzen.
gruß,
wahsaga
Hi wahsaga,
wenn du das nicht willst, schau dir die konfigurationsoptionen für sessions an. wenn du session.use_cookies deaktivierst, verzichtet PHP auf den versuch, beim ersten starten der session ein cookie zu setzen.
Scheint zu funken. Danke. Aber so richtig verstanden habe ich es noch nicht.
Konkret: Warum werden Parameter weiterhin angefordert obwohl diese eigentlich schon längst bekannt sein müssten?
gruß,
wahsaga
Grüsse
Frankie
hi,
Konkret: Warum werden Parameter weiterhin angefordert obwohl diese eigentlich schon längst bekannt sein müssten?
wie meinen?
was wird "weiterhin angefordert", und woher soll es bekannt sein?
ich verstehe nicht, was du meinst.
gruß,
wahsaga
Hi wahsaga,
was wird "weiterhin angefordert", und woher soll es bekannt sein?
... bekannt sollte es aus dem zugrundeliegenden Request sein (GET, POST, REQUEST)
ich verstehe nicht, was du meinst.
Warum wird ein Cookie erwartet wo keins erforderlich ist?
gruß,
wahsaga
Grüsse
Frankie
hi,
... bekannt sollte es aus dem zugrundeliegenden Request sein (GET, POST, REQUEST)
was ist "es"?
meinst du die session-id?
Warum wird ein Cookie erwartet wo keins erforderlich ist?
wer sagt denn, dass eins erwartet wird?
gibt der server/das script etwa eine derartige meldung aus?
noch mal:
PHP versucht bei default-einstellungen für den session-kram zunächst _immer_ beim ersten start der session die SID in einem cookie abzulegen - weil's eleganter aussieht, und auch das risiko geringer ist.
da PHP aber zu dem zeitpunkt noch nicht wissen kann, ob der client den keks akzeptiert, wird die SID auch als GET-parameter an alle relativen links angehängt (sofern use_trans_sid aktiviert ist).
beim nächsten request schaut PHP dann, ob der cookie mit der SID wieder mitgeliefert wurde. wenn ja, schließt PHP daraus, "OK, übergabe per keks funktioniert", und verzichtet danach auf das anhängen als GET-parameter. wenn nicht, wird die SID weiterhin per GET übergeben - neue cookies versucht PHP nicht mehr zu setzen, hat es ja als zwecklos erkannt.
wie gesagt, wenn du dieses verhalten nicht magst, und die SID immer per GET übergeben willst, ändere halt die entsprechenden konfigurations-optionen.
gruß,
wahsaga
Hi wahsaga,
wie gesagt, wenn du dieses verhalten nicht magst, und die SID immer per GET übergeben willst, ändere halt die entsprechenden konfigurations-optionen.
Wenn ich die entsprechenden Optionen ändern könnte, würde ich das tun bzw. hätte ich das längst getan. Allerdings kann/darf ich das nicht. Und um genau dieses (obsulete) Setzen von Cookies zu vermeiden gebe ich eben _alle_ Parameter in jedem RQUEST an.
Naja, im Prinzip ist es auch ziemlich egal, wollte halt diese Seite etwas "barrierefreier" gestalten.
gruß,
wahsaga
Grüsse
Frankie
hi,
Wenn ich die entsprechenden Optionen ändern könnte, würde ich das tun bzw. hätte ich das längst getan. Allerdings kann/darf ich das nicht.
hast du es versucht?
die session-optionen sind alle PHP_INI_ALL änderbar, also beispielsweise auch per .htaccess oder ini_set().
Und um genau dieses (obsulete) Setzen von Cookies zu vermeiden gebe ich eben _alle_ Parameter in jedem RQUEST an.
was heißt alle parameter? sämtliche werte, die deine scripte benötigen, und nicht nur die session-id?
wofür brauchst du dann noch sessions? deren _sinn_ liegt doch gerade darin, dass man bestimmte werte serverseitig ablegen kann, und nur die SID bei jedem request übergeben muss ...
gruß,
wahsaga
Hallo wahsaga,
hi,
Wenn ich die entsprechenden Optionen ändern könnte, würde ich das tun bzw. hätte ich das längst getan. Allerdings kann/darf ich das nicht.
hast du es versucht?
Ja, bei mir lokal und bei einem Provider funktioniert es jetzt auch mit
ini_set ("session.use_cookies", 0)
bei einem anderen Provider nicht. Hatte zuerst bei letzterem Provider getestet, daher meine Aussage, daß es nicht ginge. Die Anweisung wird dort zwar nicht mit einem Fehler quittiert, aber anscheinend ignoriert. Aber bei diesem Provider laufen viele Dinge nicht so wie man es erwarten würde ;-(
was heißt alle parameter? sämtliche werte, die deine scripte benötigen, und nicht nur die session-id?
wofür brauchst du dann noch sessions? deren _sinn_ liegt doch gerade darin, dass man bestimmte werte serverseitig ablegen kann, und nur die SID bei jedem request übergeben muss ...
Naja, war schon spät gestern. Natürlich werden nicht "alle" Parameter übergeben, sondern nur die zur Steuerung der Seite notwendigen.
Grüsse
Frankie