Probleme mit setcookie

Hallo meine php-Seiten sind folgendermassen aufgebaut

setcookie("NachHauseResell",$xres,time()+7776000,"",".nach-hause-telefonieren.de",1); 
include "../incl/head.php"; 
echo ' Nach Hause telefonieren ! ';
include "../incl/foot.php"; 

Zuerst habe ich versucht in der head.php gleich als erstes das setcookie zu setzen. Das hat aber einen Fehler gebracht, mit dem Hinweis, dass bereits etwas in den Output geschrieben worden waere.

Jetzt habe ich versucht es gleich auf der oben angezeigten Seite als erstes zu verwenden, so wie ich es hier auch eingetragen habe. Jetzt kommt zwar kein Fehler mehr, aber ich bekomme auch auf der naechsten Seite keine infos in $_COOKIE[‚NachHauseResell‘].

Kann hier jemand erkennen welchen Fehler ich mache?
Und weshalb funktioniert die Variante nicht, wenn ich das setcookie gleich in die head.php an den Anfang setze.

php schreibt doch sicherlich nicht zuerst die aufgerufene Datei in den Output und dann den included head - oder doch?

Bin fuer jeden Hinweis dankbar.

Chris

Hi,

PHP sendet im Normalfall die Daten so wie sie angegeben sind. Daten, die in den Header gehören, müssen vor jeglichen anderen Daten angegeben werden.

Bei includes wird deren Inhalt an die Stelle der Einfügung eingebunden. Wenn zuvor HTML ausgegeben wurde, ist es für Headerdaten zu spät.

Dein Script scheint sich nicht an das grundlegende EVA-Prinzip zu halten.
Zunächst die Eingaben sichten, danach die Verarbeitung und erst dann die Ausgaben.

Gruß
Ingo

Hallo Ingo,

das verstehe ich jetzt nicht so ganz:

Es wird eine Datei index.php aufgerufen.
Inhalt dieser Datei ist das in meiner ersten Frage aufgefuehrte Script.
Es wird also gleich zu Anfang das include des Kopfes ausgefuehrt.
Der Kopf sieht so aus:

if(!empty($\_GET))
 { extract($\_GET, EXTR\_OVERWRITE); }
if(!empty($\_POST))
 { extract($\_POST, EXTR\_OVERWRITE); }

$xres = $xres ? $xres : '0';

setcookie("NachHauseRes",$xres,time()+7776000,"",".nach-hause-telefonieren.de",1); 
?\>



.......

Mir ist nicht klar, wo da jetzt vor dem setcookie was geschrieben wird, dass die Fehlermeldung auftaucht, es waeren in dieser Variante bereits Daten an den output gesendet.
Ebenso ist mir unklar weshalb diese Fehlermeldung NICHT kommt, wenn ich das setcookie direkt in die indexdatei setze, wie in meinem ersten Beitrag beschrieben.

So komme ich da im Moment noch nicht weiter

Gruss
Christian

Hi,

Der Kopf sieht so aus:

schau’ nach, was davor im Quelltext der index oder include Datei steht - dies kann auch ein Leerzeichen, ein Zeilenumbruch oder im Fall von utf-8 ein BOM sein.
Und verlasse Dich nicht auf short-open-tags; irgendwann wird auch Dein Server sich nicht mehr damit zufrieden geben.

Gruß
Ingo

Ein Beispiel :

Zeilenumbruch oder im Fall von utf-8 ein BOM sein.

ich hab eine software für ein linux gedownloaded .
Bearbeite die Daten aber mit einem Windows Editor der auf Windows voreingestellt ist.
Wenn ich das nun Speichere ändert offt der Editor das Dateiformat auf sein Windows UTF-8 mit BOOM .

Uploade ich die Datei nun auf ein Linux server .

Der Linux Server arbeitet aber mit UFT- ohne BOOM.

Da du die Datei aber als Windows UTF-8 vorliegen hast, liest der Linux Server nun ein zusätzliches Zeichen (das Boom) und gibt das aus.
auch wenn du das Zeichen nicht sehen kannst, es ist für den Linux Server eine Ausgabe und nicht Teil der UTF-8 identifikation.

Windows ungleich Linux

Hi,

Wenn ich das nun Speichere ändert offt der Editor das
Dateiformat auf sein Windows UTF-8 mit BOOM .

auch Windows hat nicht „BOOM“ gemacht… :wink:

Gruß
Ingo

OT^6: Probleme mit setcookie
Moin moin,

Dateiformat auf sein Windows UTF-8 mit BOOM .

auch Windows hat nicht „BOOM“ gemacht… :wink:

Das nennt man dann vorzugshalber „Blue Screen“ :smile:

Thomas Punkt.

Hi,

Du hast aber hoffentlich meine Anspielung wegen dem Doppel-O verstanden?

Gruß
Ingo