Cannot modify header

Hallo!
„Cannot modify header…header already sent…“

Den ollen Fehler bekomme ich bei einem setcookie (es erfolgt keine Ausgabe von html Code zuvor …laut Fehlermeldung wird der Output bei einem Javascript ohne Ausgabe gestartet). Output Buffering auf 1 setzen habe ich versucht. Hat nichts gebracht. Ebensowenig ein ob_start() und ob_end_flush().

Den Fehler habe ich nicht bei meinem Apache Lokal bekommen und auch nicht bei einem kostenlosen Webspace den ich habe.

Nur bei meinem Haupt-Hoster erscheint der Fehler immer an der selben Stelle und der Support behauptet nun das läge an der Domainweiterleitung (die betroffene Domain ist nicht von ihm). Angeblich bekommt der Browser beim Aufruf der Domain nen Header und dann später beim laden des Contents nochmal?? Das ist doch Quark oder?

Habe die betroffene Domain auf meinen Kostenlosen Webspace umgeleitet und dort funktioniert das skript dann trotzdem noch.

Habe bei dem Hoster noch eine Domain und die auf das „fehlerhafte“ skript umgeleitet (weil der Support behauptet hatte das läge an der FremdDomain) und der Fehler besteht immernoch .

Das liegt doch offensichtlich an einer Servereinstellung?? An welcher?
Ich glaube die haben keinen Bock sich darum zu kümmern und ich habe keinen bock da noch mehr stunden zu investieren :frowning:.

Danke
Grüße
Patrick

zeig doch mal Deinen Code…

meine Vermutung ist dass Du einen Fehler drin hast der nur bei bestimmtem error reporting auch angezeigt wird und da sind die kostenpflichtigen Webspaces öfter mal kleinlicher eingestellt aber ohne code kann man nicht sagen woran es liegt…

ich poste ihn heute mittag mal. Bin gerade nicht am notebook.

Es geht ja nicht nur um die Ausgabe der Meldung…der Code funktioniert dort auch einfach nicht. Es wird kein Cookie erzeugt offensichtlich.
Es ist ein Login skript. Anhand des Cookies gelangt man in den internen Bereich … nur nicht auf dem Webspace eben. Auf andrem gibts keine Fehlermeldung und es tut wie es soll grrrr.

Und da zu sagen es liegt an der domain weil die nicht von ihnen ist finde ich unsinn.

Aber wie gesagt…heute mittag folgt der code. Vielen Dank !

Grüße
Patrick

Hallo,
ich rufe die seite mittels einer anderen Domain (ist auf den Webspace verlinkt) auf.

Warning: Cannot modify header information - headers aldready sent by (output startet at /www/htdocs/w00xxxx/htdocs/login/includes/header.php: 14)
in /www/htdocs/w00xxxx/htdocs/login/login.php on line 16

header.php anfang (line 14 ist die unter :

<?php require_once("includes/funcs.php");<br />
function ShowHeaderLogo($image){
?\>
<?php }<br />?\>...
\<!--
body { margin: 5; font-family: Verdana,Arial; font-size: 9pt; }
body, td { font-family: Verdana,Arial; font-size: 9pt; }
\</PRE\>
-----------------------------

Login.php Anfang (zeile 16 ist die mit dem setcookie):
&lt:stuck\_out\_tongue\_winking\_eye:RE\>\<?php
require\_once("includes/header.php");

if (check\_cookie()) {
?\>
Sorry, aber du bist bereits eingeloggt!\<br /\>\<br /\>
\<a href="javascript:history.back(-1);"\>Zurück\</a\>
\<?php
} else {
 if ($user && $pass) {
 $sql = mysql\_query("SELECT \* FROM `cv_users` WHERE USER='" . $user . "' LIMIT 1");
 $abfrage = mysql\_fetch\_array($sql);
 if (crypt($pass, md5($pass)) == $abfrage["PASS"]) {
 if ($abfrage["STATUS"] == "1") {
 $array = $abfrage["ID"] . "\_" . $abfrage["PASS"];
 setcookie("cv\_users", $array, time() + 68400 \* 68400);
 mysql\_query("UPDATE `cv_users` SET LTIME='" . (time()) . "' WHERE USER='" . $user . "'");
 weiterleitung("index.php", "parent");
\</PRE\>

sorry - daraus geht nichts hervor.
Wo wird das login initiiert?
Wann wird die login.php ausgeführt?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

sorry - daraus geht nichts hervor.
Wo wird das login initiiert?
Wann wird die login.php ausgeführt?

die Login.php wird ausgeführt wenn jemand auf den Login knopf drückt. Es wird die Index.php neu geladen (steht im Code, siehe Weiterleitung). Diese Wiederrum lädt das Menü. Im Menü wird geschaut ob das Cookie gesetzt ist, falls ja enthält es die Funktionen für den Internen Bereich…

Das Lustige ist, wenn ich die Zeile lösche die angeblich das Output startet lösche, dann ist es die Folgezeile die den Output anfängt, wenn ich die Lösche ist es dann die darauffolgende etc etc… das liegt meiner Meinung immernoch an irgendeiner Servereinstellung.

Grüße
Patrick

Hallo

Ich glaube, du hast da was falsch verstanden. Vor dem Setzen von Headers und Cookies darf nicht nur kein HTML, sondern kein einziges Zeichen gesendet werden. Die Daten, die an den Browser geschickt werden, sind in zwei Teile gegliedert: 1. Headers/Cookies und 2. eigentlicher Code. Deshalb müssen die Headers zuerst gesetzt werden. Manche Provider verhindern dieses Problem, indem sie einen zusätzlichen Buffer einbauen.

Also:
Erst den Cookie setzen und dann

.
.
.
\</PRE\>
ausgeben.

Johannes Matschke

Hallo!

was du meinst ist doch das Output buffering oder??
Heisst das ich kann das so lange per htaccess aktivieren wie ich möchte und es bringt mir nichts solange das der Server nicht unterstützt??

Ich hatte das nämlich testweise bereits aktiviert, hatte nichts gebracht.

Grüße
Patrick

Hallo,

Ich habe die header.php leergeräumt und in header2.php (nur für den login) umbenannt. Funktioniert einwandfrei nun.

Vielen Dank.

Grüße
Patrick

Hallo!

was du meinst ist doch das Output buffering oder??
Heisst das ich kann das so lange per htaccess aktivieren wie
ich möchte und es bringt mir nichts solange das der Server
nicht unterstützt??

Wenn du es in .htaccess aktivierst (Wie heißt denn der Befehl?), dann sollte es funktionieren (zumindest bei einem Apache-Server), wenn es nicht basichtlich geblockt wurde, was ich mir bei Bezahl-Servern nicht vorstellen kann. Nicht verwechseln darfst du das mit ob_start(), denn das läuft IMO PHP-intern.

Ich hatte das nämlich testweise bereits aktiviert, hatte
nichts gebracht.

Grüße
Patrick