[PHP] Fehlermeldung

Toengel

Commander
Registriert
Aug. 2001
Beiträge
2.529
Tachchen,

ich hab auf meinem WinXPPro+Sp1 Apache2 mit PHP4 laufen und beim Ausprobieren meiner Seiten bekomme ich folgenden Fehler:

Warning: Cannot modify header information - headers already sent by (output started at F:\Eigene Dateien\www\index.php:9) in F:\Eigene Dateien\www\main\top.php on line 17

Die Seiten laufen aber problemlos bei meinem Onlineprovider. Kann mir jemand weiterhelfen.

Toengel@Alex
 
Wahrscheinlich hast du auf deinem Home-Server den Benarichtungsmodus so laufen, dass er schon bei Kleinigkeiten anfängt zu meckern und dann kommt es auf deine Programmierung an ... kann sein, dass er einfach sagt, dass eine Variable nicht gesetzt wurde und dadurch schon eine HTML-Seite erzeugt wurde und dein Header-Befehl deshalb nicht greift ...

Mac einfach mal

Code:
error_reporting(0);

Irgendwo am Anfang deiner datei rein und dann sollte der Fehler nicht mehr auftreten, weil der Apache keine Fehler mehr ausgibt.

Code:
error_reporting(5);

Ist vielleicht auch sinvoll, da werden Fatal Error und Parsing Error gezeigt, aber keine normalen Nachrichtenfehler-
 
Original erstellt von GeYe
Wahrscheinlich hast du auf deinem Home-Server den Benarichtungsmodus so laufen, dass er schon bei Kleinigkeiten anfängt zu meckern

Tachchen,

wie bzw wo kann ich den Modus aendern?

Original erstellt von GeYe
dein Header-Befehl deshalb nicht greift ...
Header- Befehl? Die Fehlermeldung kommt durch folgenden Code:
PHP:
<?php
$lastvisit = $HTTP_COOKIE_VARS["letzterbesuch"];
if (!$lastvisit)
{
echo "first visit";
}
else
{
echo "$lastvisit","_last visit";
}
$datum = date("d.m.Y");
setcookie("letzterbesuch", $datum, time()+365*24*60*60);
?>

Toengel@Alex
 
du darfst bei Cookies keine Ausgabe senden, also kein HTML und kein echo vorher !!!

also zuerst "setcookie", dann "echo"

das muss dann wie folgt aussehen:

<?
setcookie ( ... );
?>

<HTML>

...

</HTML>
 
Als Ergänzung: Sämtliche Header (auch Cookies werden im Header übertragen) müssen vor jeglicher Ausgabe des Scripts übertragen werden, weil der Header vor dem eigentlichen Inhalt gesendet wird. Wenn schon Inhalt gesendet wurde, kann kein "zusätzlicher Header" mehr übertragen werden.

Umgehen kannst du das mit den Output Buffer Funktionen von PHP (ob_*()-Funktionen), sodass die gesamte Ausgabe des Scripts im Webserver-Cache bleibt und erst nach Beendigung des Scripts damit begonnen wird, die Daten zu senden. So könntest du dann an jeder x-beliebigen Stelle im Code ein Cookie setzen oder die header()-Funktion verwenden.
 
Zurück
Oben