Frage von HowKnow, 50

Warum funktioniert das Setzten von Cookies nur auf dem Localhost?

Mit dem Code setzte ich einen Cookie, den ich irgendwann wieder auslesen möchte. Beides funktioniert prächtig auf dem Localhost. Lade ich das Ganze in den Webspace, klappt das nicht mehr. Mit Hilfe vom Analyse-Tool in Chrome hab ich mit die gespeicherten Cookies anzeigen lassen und bin deshalb sicher, dass genau dieser eine Schritt, nämlich das Setzten des Cookies nicht funktioniert.

setcookie("name", "MaxMustermann", time()+3600, "/");

Hat jemand da eine Idee?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von perhp, 30

Probier dann mal den Cookie von JQuery: https://github.com/carhartl/jquery-cookie

Ich verwende immer diesen in JavaScript und er funktioniert bei mir einwandfrei. Du musst dann einfach

$.cookie("name", 'MaxMustermann', { expires : 3600 });
Antwort
von StarsAStripes, 38

Vielleicht hat dein Webspace irgendwelche Restriktionen für das Setzen von Cookies.

Oder aber das in PHP wird das Cookie unter einem anderen Hostname gespeichert, weil der Webspace intern einen anderen Hostname benutzt. Hast ja explizit keinen Hostname angegeben.

Kommentar von HowKnow ,

Ich habe den Code für das Setzten des Cookies in eine PHP-Datei ausgelagert, die ich immer am Anfang der Seite einbinde. Wie gesagt; auf dem Localhost hat es funktioniert. Nun habe ich, wie du gesagt hast, auch einen Hostnamen angegeben. Rufe ich die index.php Seite auf, die die PHP-Datei included, in der der Cookie gesetzt wird, dann wird immer noch keiner gesetzt. Rufe ich allerdings über die entsprechende URL direkt die einzelne PHP-Datei auf, in der der Cookie gesetzt wird, dann wird er auch gesetzt. Können include_once und Cookies nicht so gut miteinander, oder woran könnte es noch liegen?

Schonmal vielen Dank für Deine Antwort. Die hat mich der Lösung einen ganzen Schritt näher gebracht :)

Kommentar von StarsAStripes ,

Dann musst Du als path jetzt nur noch "/" angeben dann sollte es funktionieren.

Siehe:

https://secure.php.net/manual/de/function.setcookie.php

->

path

Der Pfad auf dem Server, für welchen das Cookie verfügbar sein wird. Ist er auf '/' gesetzt, wird das Cookie innerhalb der gesamten domain verfügbar. 

Kommentar von HowKnow ,
setcookie("keks", "wert", time()+3600, "/", "website.com", false, false);

Nach dem Vorbild secure.php.net sieht es wie oben geschrieben aus. Und es verhält sich leider noch so, wie zuvor. Aber syntaktisch sollte alles hinhauen. Muss wohl wirklich an irgendwelchen Restriktionen vom Webspace Anbieter (one.com) liegen. Ich werde da mal nachforschen.

Hab vielen Dank für Deine Mühe!

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten