Cookie setzen, aber wie!?

  • Themenstarter Themenstarter PatMor
  • Beginndatum Beginndatum
P

PatMor

Ich möchte gern PHP erlernen und in meinem ersten Projekt arbeite ich mit 3 Sprachen. Soll heißen, dass jeder Nutzer die gewählte Sprache in einen Cookie geschrieben bekommt und beim nächsten besuch gleich die Richtige Sprache verwendet wird. Nun versuchte ich es mit diesem Script:

<?php
error_reporting(E_ALL);
setcookie("xyz", "test");
echo "Es wurden ".count($_COOKIE)." Cookie(s) übergeben";
?>

Das mir, soweit habe ich es verstanden, den Cookie xyz erstellt und "test" hineinschreibt und weiterhin wird mir angezeigt wieviele Cookies übergeben wurden (alle auch von anderen Seiten?). Jedenfalls bekomm ich immer folgende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at Z:\xampp\htdocs\---\html\index.php:4) in Z:\xampp\htdocs\---\html\index.php on line 19
Es wurden 0 Cookie(s) übergeben

line19: setcookie("xyz", "test");

Könntz mir da helfen?

Thx..
 
HTTP-Cookies werden über den HTTP-Header abgewickelt. Dieser wird vor der eigentlichen Nutzlast der Anfrage- und Antwortnachricht gesendet. Gab es nun bereits eine Ausgabe, kann der Apache-Webserver den Header nicht mehr verändern, da er bereits gesendet wurde. Du musst den Cookie also vor jeglicher Ausgabe setzen.
 
Weiterhin ist der Cookie nicht direkt nach dem Setzen ansprechbar sondern erst nach einem Reload. Deine Ueberpruefung wie viele Cookies gesetzt wurden ist also direkt nach setcookie() vollkommen fehl am Platz und wird Dir hoechstens die Anzahl bereits zuvor gesetzter Cookies anzeigen, aber eben den neu gesetzten nicht eingerechnet.
 
Also muss ich das "setcookie" an den anfang des scriptes setzen!? Also ich arbeite mit iframes und setz das in den Banner (Sprachen-Auswahl) noch vor den html-Tag und muss dann etwas einbauen das die Seite nach dem setzen des veränderten Cookies (wenn also die Sprache geändert wird) neu geladen wird weil der Cookie erst dann ausgelesen werden kann!? Hab ich das jetz richtig verstanden?

Verzeiht mir, aber das sind wirklich erste Schritte in PHP.. :)

Die Ausgabe brauch ich ja eigentlich nicht, ich wollte halt nur den Fehler finden und dachte das würde helfen.
 
Wenn der Cookie in einem iFrame gesetzt wird sollte das okay sein, denn iFrames sind ja seperate Dateien und werden somit gesondert angefordert. Jedoch musst Du, wie Gumbo schon sagte, darauf achten, dass in diesem iFrame nichts ausgegeben wird bevor Du setcookie() aufrufst.
Wenn Du setcookie() in der Hauptseite aufrufst koennte es uebrigens sein, dass der Cookie im iFrame bereits ohne Reload zur Verfuegung steht. Das ist jetzt aber nur Spekulation.
 
Zurück