Cannot modify header information

expansioN

Mitglied
heyho @ all, ich hoffe ihr könnt mir helfen...

Gleich mal vorne weg, die SuFu hat nichts zu Tage gefördert, was mir hilft. Da stand nämlich immer, dass der Fehler durch einen "header ()" Befehl verursacht wird. Das Problem liegt allerdings darin, dass ich keinen Headerbefehl habe. Hier erstmal die Fehlermeldung:

Code:
Warning: Cannot modify header information - headers already sent by (output started at /home/webpages/lima-city/expansion/html/ind.php:6) in /home/webpages/lima-city/expansion/html/ind.php on line 53

Und das Script (Besuchercounter)
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Titel</title>
<script src="Scripts/AC_ActiveX.js" type="text/javascript"></script>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script> 
<link href="css/box01.css" rel="stylesheet" type="text/css" />
</head>
<body>

<div id="container">
	<div id="topimg">
    </div> <!-- end toping -->
  <div id="main">
  	<div id="menue">
    	<ul>
    	  <li><a href="ind.php" target="_self">Startseite</a></li>
    	  <li><a href="news.html" target="_self">News</a></li>      
    	  <li><a href="tuts.html" target="_self">Tutorials</a></li>
   		  <li><a href="contact.html">Contact</a></li>
  	  	</ul>
  </div> <!-- end menue -->
  
  <div id="content">
   <div id="intext">
     <p><span class="h1">Willkommen</span></p>
     <!-- COUNTERSTAND MIT RELOADSPERRE! -->
     <?php
		$datei = fopen("counter.txt","r+");
		$counterstand = fgets($datei, 10);
		if($counterstand == "")
 			{
			$counterstand = 0;
  			}

		if($_COOKIE ['besucht'] == "ja")
  			{
  			}
 		else 
  			{
			$counterstand++;
			rewind($datei);
			fwrite($datei, $counterstand);
			setcookie("besucht", "ja");
  			}
		echo "Sie sind der ".$counterstand." Besucher";
		fclose($datei);
	?>

Das sind alle Zeilen bis nach dem Counter. Ich weiß wirklich nicht weiter. Danke im Vorraus :-)

EDIT: Wenn ich das script vors javascript tu gehts auch nicht...
 
Zuletzt bearbeitet:
Hallo!

setcookie() sendet auch einen Header..... ergo muss das Cookie vor dem HTML-Code gesendet werden.

Gruss Dr Dau

[edit]
Ein Blick in die Funktionsbeschreibung von setcookie() hätte es Dir aber auch veraten. ;)
[/edit]
 
Zuletzt bearbeitet:
ah ok thx aber... ich bin noch ein Neuling und weiß jetzt nicht wie ich das am Besten anders mache.
Wo muss ich den cookie setzen oder geht es auch über IP-ban oder ähnliches?
 
Ohne es jetzt auszuprobieren, würde ich den PHP-Code nach ganz oben setzen.
Lediglich Dein echo gibst Du an der gewünschten Stelle aus.
 
Der Code steht jetzt ganz oben noch vorm Doctype. Aber Hauptsache es funktioniert.

Das klingt so, wie wenn das in deinen Augen nicht korrekt wäre.

Ist es aber ;-) Wenn du mit PHP und HTML arbeitest, musst du dir immer bewusst machen, wie dein Code zu dem wird, was der Besucher in seinem Browser sieht. Wenn das Script aufgerufen wird, werden zuerst alle PHP-Befehle ausgeführt (also alles, was zwischen <?php und ?> steht). Das geschieht auf dem Server. Als Ergebnis wird unter anderem HTML-Code zurückgegeben, wie z.B. in deinem Fall in dieser Zeile:

PHP:
echo "Sie sind der ".$counterstand." Besucher";
|
|
V
HTML:
Sie sind der 25 Besucher

Den zurückgegebenen HTML-Code fügt der Interpreter einfach an der Stelle in das HTML-Dokument ein, an der er ausgegeben wird. Dann erst wird das ganze an den Browser des Besuchers geschickt. Dort wird dann die dynamisch generierte HTML-Seite angezeigt. Von den ganzen PHP-Funktionen sieht der Browser absolut nichts und damit steht auch die Doctype-Declaration wieder an erster Stelle im Dokument. Vorausgesetzt natürlich, du hast das echo erst an der betreffenden Stelle eingefügt, so wie es Dr. Dau vorgeschlagen hat.

Viele Grüße,
Frezl
 
Zurück