Cookie auf localhost

Hallo,

Ich baue mir gerade eine Site, die ich über meinen
xampp Localhost teste.
Als Browser verwende ich Mozilla.
Hab da jetzt ein garstiges Problem mit einem Cookie.

In einem PHP Script mit der Adresse:
http://localhost/Websites/Watchlist2/6/php/log.php

setze ich mit der Anweisung:
setcookie(„links“, „test“, time()+60*60*24*7);

ein Cookie, den ich nach einer Weiterleitung auf:
http://localhost/Websites/Watchlist2/6/start.html

versuche wieder auszulesen. Klappt nur leider nicht.

Wenn sich in meinem MozillaBrowser die log.php befindet, kann ich mir über Cookieinformationen das Cookie anzeigen lassen. Es ist also da.

Wenn ich mich aber mit Mozilla im Start.html befinde,
wird mir über Cookieinformationen garnichts angezeigt.
Ich habe auch schon mit den ‚path‘ und ‚domain‘ Optionen in der setcookie-Anweisung experimentiert.
Ob ich da vielleicht was falsch mache?

Vielleicht könnt mir jemand bei dem Problem helfen. Komm da einfach nich weiter.

Gruß Daniel…

Hi,

ich bin mir grad nicht sicher, aber ich meine, wenn kein Pfad beim setzen des Cookies übergeben wird, gilt der Cookie nur für das aktuelle Verzeichnis und die Unterverzeichnisse, in dem drüberliegenden Verzeichnis, in dem sich ja die start.html befindet, ist der Cookie also nicht erreichbar. So steht es jedenfalls hier: http://php.net/manual/de/function.setcookie.php.

Also musst du als Cookiepfad „/“ angeben.

MfG,
Subsurf

Hi Daniel,

wie’s scheint wird lt. Cookie-Spezifikation(en) eine Domain ohne . nicht akzeptiert. Zwar gibt’s auch ne Spec für eine Syntax, bei der .local an den Domainnamen angehängt wird, aber evtl. ist das browserspezifisch implementiert.
Du kannst dich ja durch die ekligen Specs wühlen:
http://curl.haxx.se/rfc/cookie_spec.html
http://www.faqs.org/rfcs/rfc2109
http://www.faqs.org/rfcs/rfc2965

… und auch ein kurzer Scan der Google-Ergebnisse für „cookie localhost“ zeigt, dass es keine einfache/saubere Lösung gibt.

Nicht speziell wg. diesem, aber anderer Artefakte verzichte ich schon lange darauf, irgendwas auf localhost zu entwickeln oder zu testen. Server + Client verhalten sich anders als in einer echten Umgebung.
Lösung:

  1. deinem Rechner eine feste IP aus dem privaten Adressbereich verpassen
  2. einen hübschen Websitenamen ausdenken, vlt. local.watchlist.net
  3. diesen Domainnamen mit der Auflösung auf deine feste IP in die hosts Datei eintragen.
    \Windows\System32\drivers\etc\hosts
  4. die Site in xampp für den Domainnamen konfigurieren, das sollte die Doku hergeben.

Gruß
Thomas

Hi Thomas,

Danke für deine Antwort und die links. Blöd das es da keine einfachere Lösung gibt. Aber naja.
Ich werd mich auf jeden Fall nochmal durchs Netz quälen auf der Suche nach einer Antwort.

Zur Not kann ich den Cookie auch erstmal per Hand setzen, um die Funktion zu testen und später beim online stellen daß mit dem Cokkie im PHP Script nochmal probieren.

Da fällt mir ein: Einen Cookie setzt man manuell im Mozilla doch über Cookies>Cookie hinzufügen.
Vielleicht gibt es ja eine Möglichkeit, sich die dann vom Mozilla generierte Anweisung als Klartext anzeigen zu lassen. Nur ne Idee.
Werd auch mal in der Richtung schaun. Wenn du was darüber weißt? Dank dir auf jed. Fall für die schnelle Antwort.

Gruß Daniel…

Hi Subsurf,
Wie ich grad erfahren hab, is es leider nich ganz so einfach. Hängt wohl mit dem Domaineinstellungen im „setcookie“ zusammen. Localhost macht da irgendwie Probleme. Ich werd mal noch n bissel googeln müssen.
Dank dir auf jeden Fall für die schnelle Antwort.

Gruß Daniel…

Hallo Daniel,

Du setzt den Cookie im Verzeichnis
http://localhost/Websites/Watchlist2/6/php/
ohne Pfadangabe; daher wird er nur an Seiten dort und in Unterverzeichnissen zurück gesendet.

Gib als vierten Parameter ‚/‘ bzw. ‚/Websites/Watchlist2/‘ an, dann sollte es funktionieren.
(Spaßeshalber kannst Du auch mal ‚…‘ ausprobieren.)

Gruß, Titus

servus,

wie liest du denn das cookie aus?!
im prinzip muss das so sein:

setcookie( ‚test‘, ‚value‘ );
$_COOKIE[‚test‘] = ‚value‘;

grüße
matze

Moinsen!

Vielleicht hilft dieser Hinweis:
„Bei dem Auslesen von Cookies ist außerdem noch zu beachten das sie nur in dem Verzeichnis wo ein Cookie gesetzt wurde, der Cookie auch ausgelesen werden kann. In einem anderen Verzeichnis ist er nicht auslesbar.“
Quelle: http://www.php-einfach.de/tuts_php_cookies.php
log.php und start.html liegen in unterschiedlichen Verzeichnissen!

Es wäre auch hilfreich, wenn mitgeteilt würde, wie versucht wird, den Cookie auszulesen (falls es noch Probleme gibt).

Grüße!

ein Cookie, den ich nach einer Weiterleitung auf:
versuche wieder auszulesen. Klappt nur leider nicht.

Ja, dieses Problem kenne ich!
Und zwar muss der httponly Parameter bei dem PHP-setcookie-Aufruf angepasst werden, da die Cookies sonst wegen möglicher Sicherheitslücken mit Javascript nicht ansprechbar sind.
Eigentlich sollte der Parameter standardmäßig deaktiviert sein, doch XAMPP hat sehr strikte Sicherheitsvorkehrungen, da es immer unwissende Leute gibt, die XAMPP doch tatsächlich als richtigen Webserver im Internet verwenden und sich daher wohlmöglich auch nicht mit Sicherheit dahingehend auskennen.
Der Angepasste Funktionsaufruf wäre dieser:

setcookie("links", "test", time()+60\*60\*24\*7, '', '', 0, 0);

Also Habs jetz endlich mit
setcookie(„links“, $links, time()+60*60*24*7, „/Websites/Watchlist2/“);
hinbekommen. Die Domainangabe ist nicht notwendig. Der Fehler lag darin, das ich versuchte mit „/“ aus dem Hauptverzeichniss zu navigieren, und das klappt wohl nich so einfach auf einem loalhost.
Dank an alle Antworten
Gruß Daniel…