Martin Hein: Cookies und Sessions

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

  1. 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

    1. 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:

      1. Der Cookie ist zeitlich begrenzt.

      Warum soll das Javascript interessieren?

      1. 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

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. 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.

        1. 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.

        1. 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

        1. 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