Probleme mit Cookie
shaq
- php
Guten Morgen alle zusammen,
ich hätte da einige Fragen zum Thema Cookies mit PHP (eigentlich nur 2).
Also ich habe ein Formular in das der user seine Daten eingibt und möchte ihm die Möglichkeit geben durch eine Checkbox -> "Diese Daten fürs nächste mal merken" diese nicht immer wieder eingeben zu müssen, daher speichere ich diese dann in ein Cookie. Klappt auch wunderbar. Cookie wird geschrieben und gespeichert hab ich nachgeguckt. Aber ich kann es nicht auslesen... Wenn ich mit var_dump($HTTP_COOKIE_VARS) sehen will was alles drin steht kriege ich alle Werte die ich in die Session gespeichert habe aber nix aus dem gesetzten Cookie. Auch mit Namen ansprechen bringt nix. Weiß jemand woran das liegt?
Und dann noch eine generelle Frage: Ich habe es jetzt so gemacht das ich die einzelnen zu speichernden Werte als einen String mit einem selbst gewählten seperator in den value des Cookies schreibe. Empfiehlt sich das so oder sollte man für jeden Wert ein eigenes Cookie setzen? Habe das im PHP Manual so gelesen das man die Werte einzeln als Cookie-array speichern kann. Ist das sauberer? Kriegt ein user der Cookies akzeptieren auf eingabeaufforderung gesetzt hat dann nicht so viele aufforderungen wie ich Werte setzen will und verlässt mich auf ewig genervt und gefrustet :-) ?
Bin dankbar für jede Hilfe, link etc.
schönen gruß
shaq
Hi,
Wenn ich mit var_dump($HTTP_COOKIE_VARS) sehen will was alles drin steht kriege ich alle Werte die ich in die Session gespeichert habe aber nix aus dem gesetzten Cookie. Auch mit Namen ansprechen bringt nix. Weiß jemand woran das liegt?
hast Du das versucht, direkt nachdem Du den Set-Cookie-Header geschrieben hast, oder einen Request später?
Empfiehlt sich das so oder sollte man für jeden Wert ein eigenes Cookie setzen?
Es gibt eine Begrenzung der Länge pro Cookie und eine Begrenzung der Cookie-Anzahl pro Host. Suche Dir aus, an welche Grenze Du eher stoßen möchtest.
Kriegt ein user der Cookies akzeptieren auf eingabeaufforderung gesetzt hat dann nicht so viele aufforderungen wie ich Werte setzen will und verlässt mich auf ewig genervt und gefrustet :-) ?
Das darfst Du gerne pro Browser selbst austesten ;-) Prinzipiell ist es schon richtig, dass es User nervt, wenn ständig Cookies gesetzt werden; Du solltest also diese Vorgänge minimieren - egal ob es sich dabei um einen oder mehrere Cookies handelt.
Cheatah
Gutem morgen,
hast Du das versucht, direkt nachdem Du den Set-Cookie-Header geschrieben hast, oder einen Request später?
einen Request später.
Es gibt eine Begrenzung der Länge pro Cookie und eine Begrenzung der Cookie-Anzahl pro Host. Suche Dir aus, an welche Grenze Du eher stoßen möchtest.
weißt du die zufällig grade so ausm Kopf?
Das darfst Du gerne pro Browser selbst austesten ;-) Prinzipiell ist es schon richtig, dass es User nervt, wenn ständig Cookies gesetzt werden; Du solltest also diese Vorgänge minimieren - egal ob es sich dabei um einen oder mehrere Cookies handelt.
OK, also bleibe ich bei der >ein Cookie - ein langer String< Variante.
Hi,
hast Du das versucht, direkt nachdem Du den Set-Cookie-Header geschrieben hast, oder einen Request später?
einen Request später.
dann solltest Du ihn lesen können, wenn er gesetzt wird. Wie lautet die setzende URL, wie die auslesende, welche Werte hast Du beim Setzen angegeben, welche sind anschließend tatsächlich vorhanden?
Es gibt eine Begrenzung der Länge pro Cookie und eine Begrenzung der Cookie-Anzahl pro Host.
weißt du die zufällig grade so ausm Kopf?
Maximal 20 Cookies pro Host à maximal 4 kB laut ursprünglicher Netscape-Spezifikation. Ob die Beschränkung, dass insgesamt beim Client nur 300 Cookies existieren dürfen immer noch gilt, weiß ich nicht.
OK, also bleibe ich bei der >ein Cookie - ein langer String< Variante.
Das wäre auch meine Wahl; wobei es vielleicht sinnvoll ist, einzelne Cookiewerte auszulagern, wenn diese keinen Zusammenhang mit den meisten anderen haben.
Cheatah
Guten Morgen alle zusammen,
Ich bin mittlerweile einen Schritt weitergekommen:
Das Cookie kann nur von dem Skript gelesen werden, das es gesetzt hat.
Das verstehe ich allerdings nicht denn es wird mit:
setCookie("KEKS",$cookieVal,time()+60*60*24*60);
gesetzt und laut PHP Manual müsste es durch weglassen der optionalen Parameter domain und path auf allen Seiten verfügbar sein oder?
Weiß jemand was ich hier falsch mache?
schönen gruß
shaq
Hi,
laut PHP Manual müsste es durch weglassen der optionalen Parameter domain und path auf allen Seiten verfügbar sein oder?
die path-Angabe ist ebenfalls relevant.
Cheatah
hallo,
die path-Angabe ist ebenfalls relevant.
hab natürlich mittlerweile auch schon mit dem path rumexperimentiert. Das setzen sieht jetzt so aus:
setCookie("KEKS",$cookieVal,time()+60*60*24*60,"/");
Das Cookie kann aber immernoch nur vom setzenden Skript gelesen werden... junge junge ich hab das früher doch schonmal gemacht, kann mich nicht erinnern das das so kompliziert war... :-)
schönen gruß
shaq
Hi,
Das Cookie kann aber immernoch nur vom setzenden Skript gelesen werden...
wie lauten die URLs des setzenden und des lesenden Scripts?
Cheatah
Hallo,
also die URL des setzenden Skripts ist "basket/order/check_form.php" und gelesen wird das ganze von einem Template das im selben Verzeichniss wie das setzende Skript liegt, aber über include in die index.php im root (der htdocs) eingebunden wird.
schönen gruß und danke für die Hilfe
shaq
Hi,
also die URL des setzenden Skripts ist "basket/order/check_form.php"
ist sie nicht. Eine URL beginnt mit dem Protokoll.
und gelesen wird das ganze von einem Template das im selben Verzeichniss wie das setzende Skript liegt, aber über include in die index.php im root (der htdocs) eingebunden wird.
Davon weiß der Client, der dem Server die Cookies schickt, absolut nichts. Wie lautet die URL?
Cheatah