Linuchs: drei Cookies mit demselben Namen

Moin,

wenn ich das Programm remso.eu/_text/cookies.php aufrufe, lese ich per PHP die vorhandenen Cookies und zeige sie an.

if ( $_COOKIE ) {
  ksort( $_COOKIE );
  foreach( $_COOKIE as $key => $val ) {
    echo "<tr>\n";
    echo "  <td><a href=\"javascript:bearbeiteCookie( '".$key."' )\">".$key."</a></td>\n";
    echo "  <td>".$val."</td>\n";
    echo "  <td>".$cookies[$key]."</td>\n";
    echo "</tr>\n";
  }
}

Mit Javascript ändere ich das Cookie "p001", aber die Änderung wirkt nicht.

Per Javascript kann ich sehen, dass es zwei Cookies mit dem Namen p001 gibt. Eins hat den gewünschten geänderten Wert, das andere den alten Wert.

Mir ist nicht klar, wie unterschiedlich PHP und Javascript Cookies verwalten. Für Javascript habe ich diesen Hinweis gefunden:

With a path parameter, you can tell the browser what path the cookie belongs to. By default, the cookie belongs to the current page.

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";

Und mit dem Zusatz path=/ schreibe ich das Cookie per Javascript.

Wenn ich den Browser Firefox frage, wird's noch verrückter: Der kennt das Cookie gleich dreimal:

Bildbeschreibung

Wie spreche ich die Cookies per Javascript an?

Linuchs

  1. Hallo

    Ich glaube die Lösung des Problems zu haben:

    Für Cookies gibt es nicht nur den Namen zur Unterscheidung, sondern auch der exakte Pfad von dem Script das den Cookie gesetzt hat. Mit "path=/" wird Javascript angewiesen das Cookie den Pfad einfach auf "DOMAIN.DE/" zu setzten, wenn aber ein PHP-Script, das im Ordner "_text" liegt, das Cookie setzt bekommt das Cookie den Pfad "DOMAIN.DE/_text/". Dies unterscheidet sich natürlich und damit sind es 2 Cookies. Damit das geht muss das PHP-Script nach "DOMAIN.DE/" verschoben werden. (Achtung: Der Cookie, der in "DOMAIN.DE/_text/" gesetzt wird, ist nur in "DOMAIN.DE/_text/" und den Unterverzeichnissen von "DOMAIN.DE/_text/" sichtbar.)