phpbar.de logo

Mailinglisten-Archive

[php] Cookies =?iso-8859-1?Q?f=FCr?= Dummies

[php] Cookies =?iso-8859-1?Q?f=FCr?= Dummies

Werner Stuerenburg ws_(at)_art-quarter.com
Mon, 19 Jul 1999 23:26:17 +0200


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