Mailinglisten-Archive |
In den letzten beiden Tagen habe ich mich mit Cookies beschäftigt. Zunächst hielt ich dieses Thema für simpel, stieß dann aber auf unerwartete Schwierigkeiten. Zunächst einmal möchte ich berichten, was ich herausgefunden habe, und dann drei Fragen stellen: 1) habe ich die Sache richtig verstanden? Und 2) geht es nicht einfacher? 3) Was meint Netscape damit, daß die Daten an den fragenden Server geschickt werden? Eine der letzten Erkenntnisse war, daß Cookies immer an die Seite gebunden sind, die den oder die Cookies setzt. So steht es jedenfalls bei Stefan Münz, aber ich glaube heraus gefunden zu haben, daß das so nicht stimmt: Cookies sind an das Verzeichnis gebunden, in dem die Seite ist, die sie gesetzt hat. Das leuchtet ja auch ein, weil dieses Verzeichnis in die Datei cookie.txt geschrieben wird (ich habe nur mit Netscape 4.6 getestet) und nicht der Name der Datei, die den Cookie setzt. Weiterhin bin ich lange Zeit sehr verwirrt gewesen, weil ich nicht begriffen habe, daß Netscape den Cookie erst dann in die Datei schreibt, wenn das Programm geschlossen wird. Erst nachdem ich die Cookie-Abfrage aktiviert hatte, habe ich erkennen können, daß tatsächlich Cookies gesetzt werden. Inzwischen hatte ich mich durch die Archive gewühlt und auch die Kommentare zur Funktion gelesen und dabei mitbekommen, daß offenbar sehr viele Leute Probleme mit dieser Funktion haben und einige sogar der Meinung sind, daß diese Funktion fehlerhaft ist, denn es gibt sogar mehrere Workarounds. Hier also Frage 1: habe ich die Sache richtig begriffen? Php3 kann offensichtlich Cookies nur setzen im Header-Bereich. Darauf stößt man sehr leicht, weil schon ein Leerzeichen davor genügt. Warum ist das so? Javascript unterliegt bekanntlich nicht dieser Einschränkung. Ich habe schon einen Versuch gemacht, die entsprechende Javaskript-Mimik in eine php3-Funktion zu verpacken, bin aber auf die Schnelle damit nicht durchgekommen. Diese Beschränkung ist meines Erachtens fatal. Konkret habe ich ein Formular, das ein php3-Script aufruft. Dieses Script kennt natürlich alle Eingabewerte und könnte zu Anfang einen Cookie setzen. Mir fehlt aber ein Wert, den ich erst in der Datenbank nachschlagen muß. Sobald ich den habe, könnte ich den Cookie setzen, und mit einiger Mühe kann ich auch in diesem Fall den Code so umstricken, daß das gelingt. Natürlich ist das aber nicht. Geht es nicht einfacher, oder anders gefragt: warum kann Javascript das und php3 nicht? Wenn der Benutzer Cookies abgeschaltet hat, sieht die Sache sowieso schon schlecht aus. Wenn ich das richtig verstanden habe, müßte ich für diesen Fall die PHPLIB-Session überall durchschleifen, was mir noch nicht ganz klar ist, wie das realisiert werden soll. Da ich im Moment keinen Shopping Cart implementieren will, könnte ich darauf verzichten, aber generell wird das gar nicht möglich sein. Diese Cookie-Lösung ist auch aus anderen Gründen zweifelhaft, scheint mir. Wenn ich das richtig erinnere, gibt es eine Obergrenze von Cookies, und zwar liegt die ziemlich niedrig, so etwa bei 300. Als ich noch die Cookie-Bestätigung eingeschaltet hatte (letztes Jahr - eigentlich nur, weil mir nicht recht klar war, was das ist, und dies die Voreinstellung war, von der ich kann ich wußte, daß ich die ändern kann, mit anderen Worten: jeder Dummie ist in derselben Lage), habe ich gemerkt, daß manche Sites einen geradezu mit Cookies bombardieren (ich erinnere Geocities). Da hat man leicht ein paar Hundert zusammen. Netscape hat drei Voreinstellungen: alle Cookies akzeptieren, kein Cookie akzeptieren, nur Cookies akzeptieren, die an den anfragenden Server zurückgeschickt werden (ich habe hier einfach mal übersetzt, von der englischen Version). Selbst ich als "Fachmann" (mit einer über 10 jährigen Geschichte in EDV bin ich das sicherlich im Vergleich mit der Masse der Benutzer) verstehe nicht, worum es hier geht. Kann ich bei jemandem ein Cookie setzen, und diese Daten woanders hinleiten? (Mit anderen Worten: die letzten Parameter sind mir unklar.) Und was heißt überhaupt "zurückgeschickt"? Wo wird da was zurückgeschickt? -- Mit freundlichem Gruss Werner Stuerenburg ____________________________________________________________ ISIS Verlag - Uhlandstr. 8 - D-32120 Hiddenhausen - Germany Tel. 0(049)5224-9974-07, Fax-09, <mailto:ws_(at)_art-quarter.com> <http://pferdezeitung.com> - <http://art-quarter.com>
php::bar PHP Wiki - Listenarchive