Cookies und Sessions
Martin Hein
- javascript
0 Martin Hein0 wahsaga
Hallo Forum,
ich habe überhaupt keine Erfahrungen mit Cookies, aber wende
sie zum erten mal an. Vorab kurz, wie ich Cookies verwende:
Per Javascript kann ich auch das Objekt document.cookie
zugreifen und dort irgendeinen Text reinschreiben, bzw.
den Inhalt des Cookies auslesen. Das funktionierte soweit
auch irgendwie.
Jetzt arbeite ich mit PHP-Sessions (mit Session-Cookie)
und mod_rewrite und die Daten werden nicht mehr sauber
im Cookie gespeichert. Sprich auf manchen Unter-seiten sind
die Daten aus dem Cookie da und auf manchen nicht.
Hat jemand ne Idee,
woran das liegen könnte ?
viele gruesse,
martin
Nachtrag:
Es scheint so zu sein, dass der Cookie, den PHP für die Session-ID
anlegt, für die Daten, die ich per JS im Cookie ablege verwendet
wird. Dieser Session-Cookie hat zwei Eigenschaften, die sich auf meine Verwednung per JS auswirken:
1. Der Cookie ist zeitlich begrenzt.
2. Der Cookie scheint auf Verzeichnisse (und deren
Unterverzeichnisse) begrenzt zu sein, was durch
mod_rewrite zur Erscheinung kommt.
Klingt das logisch ? Was ist zu tun ?
merci und
viel gruesse,
martin
hi,
Es scheint so zu sein, dass der Cookie, den PHP für die Session-ID
anlegt, für die Daten, die ich per JS im Cookie ablege verwendet
wird.
Das könnte ja nur dann passieren, wenn du im JS den selben Cookienamen verwendest.
Dieser Session-Cookie hat zwei Eigenschaften, die sich auf meine Verwednung per JS auswirken:
- Der Cookie ist zeitlich begrenzt.
Warum soll das Javascript interessieren?
- Der Cookie scheint auf Verzeichnisse (und deren
Unterverzeichnisse) begrenzt zu sein, was durch
mod_rewrite zur Erscheinung kommt.Klingt das logisch ? Was ist zu tun ?
Zweiterem ist Abhilfe zu schaffen - durch setzen eines geeigneten Path-Parameters beim Setzen des Cookies.
gruß,
wahsaga
Hi,
ich habe keine Erfahrung mit Cookies und mich am Beispiel
von http://de.selfhtml.org/javascript/objekte/document.htm#cookie orientiert. Demnach ist ein Cookie
eine dem Dokument zugordnete Zeichenkette.
Das könnte ja nur dann passieren, wenn du im JS den selben Cookienamen verwendest.
Von einer Möglichkeit, dem Cookie einen Namen zu geben, steht in
der Objektreferenz nichts. Sprich: Ich weiss davon nichts.
- Der Cookie ist zeitlich begrenzt.
Warum soll das Javascript interessieren?
Beim erneuten Besuch der Seite sind die Daten (, die eigentlich
erhalten bleiben sollen) nicht mehr vorhanden. Das interessiert
Javascript vielleicht nicht, aber mich.
- Der Cookie scheint auf Verzeichnisse (und deren
Unterverzeichnisse) begrenzt zu sein, was durch
mod_rewrite zur Erscheinung kommt.Klingt das logisch ? Was ist zu tun ?
Zweiterem ist Abhilfe zu schaffen - durch setzen eines geeigneten Path-Parameters beim Setzen des Cookies.
Ich verstehe das so:
--------------------
PHP setzt den Cookie durch session_start() automatisch, Javascript
greift auf eben diesen Cookie zu (if(document.cookie)...). Ich
müsste nach meinem Verständnis mit zwei Cookies arbeiten. Einem,
den PHP für die Session-ID verwendet, der nur über die Session
hinweg hält und einem, in den Javscript Daten schreibt, der erhalten
bleibt.
Aber wie ?
beste gruesse,
martin hein
Hi,
ich glaub, nun hab ich's verstanden ;)
der Inhalt der JS-Objekts document.cookie ist nicht einfach
nur ein String, sondern die komplexe Information über alle
auf der Seite vorhandenen Cookies.
js:
---
alert(document.cookie)
-> "test1=1; test2=2"
document.cookie = "test3=3";
alert(document.cookie)
-> "test1=1; test2=2; test3=3"
php:
----
for (reset($_COOKIE);$key=key($_COOKIE);next($_COOKIE))
{
echo $key."=".$_COOKIE[$key]." ";
}
--> "test1=1 test2=2 test3=3"
Der Inhalt aus document.cookie ist also nicht 1 Cookie, sondern
sind 3 Cookies. Alle drei können unterscheidliche Paramter für
'path' und 'expires' haben, die man zwar per JS vergeben, aber
nicht auslesen kann.
Korrekt ?
beste gruesse,
martin