Laden einer neuen .html seite geht nicht

cwagner

Grünschnabel
Hallo
ich habe mich seit einigen Tagen durch viele Foren durchgearbeitet und ich weiss dieses Problem taucht massenhaft auf aber ich kriegs leider bis jetzt auch nicht hin...

Ich möchte nach dem versenden von Formulardaten eine Danke Seite aufrufen und versuche das mit folgendem php-Script-Ende:

/* Sende eMail und gebe Fehler bzw. Bestaetigung aus */
if(@mail($an,$subject,"",$mail_header)) header ('Location: http//www.itw-oberstufe.ch/form/eintrag_danke.html');
else echo "Es ist ein Fehler beim senden der eMail aufgetreten.";
} else {

?>

Das Mail wird mit allen Formulardaten korrekt versandt aber die Danke-Seite wird nicht aufgerufen. Dafür erhalte ich die untenstehende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /home/itw-oberstufe.ch/htdocs/form/eintrag_up2.php:23) in /home/itw-oberstufe.ch/htdocs/form/eintrag_up2.php on line 140

Kann mir jemand helfen was an meinen Skript falsch ist bzw. wie ich den header Tag anders schreiben / anwenden muss... ich hab schon so viel ausprobiert und es will einfach nicht funktionieren.
Merci
 
vermutlich hast du noch

<html><header>......</header> ...... in deiner eintrag_danke.html ?

wenn ja musst du das einfach löschen.

Alternativ kannst du den Output auf Zeile 23 versuchen abzustellen.

Im Allgemeinen gilt : "Less Talk , more Source" da meistens der Source für sich selbst spricht.

Gruß

kato
 
Die Fehlermeldung sagt ja schon eindeutig aus, dass bereits nen Header gesetzt wurde und der deswegen nicht modifiziert werden kann...

Source Zeile posten, dann können wa schaun Bzw du guggst selber mal da nach...
Wie bereits mein Vorposter sagte...

[OFFTOPIC]
Wow Ich hab nen Vorposter xD
Aba zum Vorkauer oder gar Vork****r brauchste net werden *totlach*
[/OFFTOPIC]
 
Ok sehr gern tu dich das ... (ich hoff ihr habt ein Scrollrad;-)
... in der Seite, die aufgerufen wird gibt es kein php also auch keinen header.
... hab schon gedacht, dass irgendwo schonmal ein header gesetzt wurde weiss aber nicht wo.

Herzlichen Dank für die Hilfe
Christof


(vor dem PHP Code gibts kein Html)

PHP:
<?php

	/* Schriftart*/
	$FONT = "<FONT SIZE=2 FACE=\"Verdana, Arial, Helvetica\">";

	/*
	  Das Array $contenttypes dient zur identifizierung des MIME-Typs des Anhanges.
	  Es beinhaltet den MIME-Typ, die Codierung und eine Beschreibung dazu. Die
	  Codierung ist hierbei sehr wichtig, da binaere Daten im base64-Format versendet
	  werden muessen (siehe http://www.php3-forum.de/mime_mail.htm)
	*/
	$contenttypes = array(
		"text/plain"			=> array("encoding"=>"8bit"  ,"info"=>"purer Text"),
		"text/html"			=> array("encoding"=>"8bit"  ,"info"=>"HTML-Dokument"),
		"image/gif"			=> array("encoding"=>"base64","info"=>"Bild: GIF"),
		"image/jpeg"			=> array("encoding"=>"base64","info"=>"Bild: JPEG"),
		"image/png"			=> array("encoding"=>"base64","info"=>"Bild: PNG"),
		"application/x-zip-compressed"	=> array("encoding"=>"base64","info"=>"Komprimiert: ZIP"),
		"application/x-gzip"		=> array("encoding"=>"base64","info"=>"Komprimiert: GZ"),
		"application/x-tar"		=> array("encoding"=>"base64","info"=>"Komprimiert: TAR")
	);

	echo $FONT;
	
	
	
	$an = 'info@christofwagner.ch';
	$von = 'ehemaliger@irgendwo.ch';
	$subject = 'Eintrag Ehemalige ITW';
	$dateiname = 'Bilddatei';
	$anhang = 'jep';
	$content_type = 'text/plain';
	$anhang_content_type= 'image/jpeg';
	
	
	

	/* pruefe, ob ein Absender und ein Mail-Inhalt eingegeben wurde */
	if($von && $mail_content) {

		/* Beginne den Mail-Header mit der Definition des Absenders */
		$mail_header = "From: $von";

		/* Wenn eine Datei als Anhang ausgewaelt wurde... */
		if($anhang=="jep" && $dateiname && $datei && $datei != "none") {

			/* Lese die temporaere Datei, die der Benutzer hochgeladen hat aus */
			$datei_content = fread(fopen($datei,"r"),filesize($datei));

			/* Codiere Datei ins BASE64-Format, falls noetig */
			if($contenttypes[$anhang_content_type][encoding]=="base64") $datei_content = chunk_split(base64_encode($datei_content));
			else $datei_content = $datei_content;

			/* Generiere einen Boundary */
			$boundary = strtoupper(md5(uniqid(time())));

			/* Beginne den Mail-Header mit MIME-Mail-Header */
			/* (siehe http://www.php3-forum.de/mime_mail.htm) */
			$mail_header .= "\nMIME-Version: 1.0";
			$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
			$mail_header .= "\n\nThis is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format";
			
			/* Eintrag */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nEintrag = $Eintrag\n\n";

			/* Vorname */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nVorname = $Vorname\n";
			
			/* Name */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nName = $Name\n";
			
			/* Strasse_Nr */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nStrasse, Nr = $Strasse_Nr\n";
			
			/* PLZ_Ort */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nPLZ, Ort = $PLZ_Ort\n";
			
			/* Telefon */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nTelefon = $Telefon\n";
			
			/* Email */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nEmail = $Email\n";
			
			/* Web_URL */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nWeb_URL = $Web_URL\n";
			
			/* Jahrgang */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nJahrgang = $Jahrgang\n\n";

			/* Hier faengt der normale Mail-Text an */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\n$mail_content\n\n";

			/* Hier faengt der Datei-Anhang an */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: $anhang_content_type; name=\"$dateiname\"";
			/* Lese aus dem Array $contenttypes die Codierung fuer den MIME-Typ des Anhangs aus */
			$mail_header .= "\nContent-Transfer-Encoding: ".$contenttypes[$anhang_content_type][encoding];
			$mail_header .= "\nContent-Disposition: attachment; filename=\"$dateiname\"";
			$mail_header .= "\n\n$datei_content\n";

			/* Gibt das Ende der eMail aus */
			$mail_header .= "\n--$boundary--";
		} else {
			$mail_header .= "\nContent-Type: $content_type";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\n".$mail_content;
		}

		/* Sende eMail und gebe Fehler bzw. Bestaetigung aus */
		if(@mail($an,$subject,"",$mail_header)) header ('Location: http//www.itw-oberstufe.ch/form/eintrag_danke.html');
		else echo "Es ist ein Fehler beim senden der eMail aufgetreten.";
	} else {

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 
So hab das mal mit meinem Scrollrad durchgescrollt und festgestellt das du auf Zeile 23 ein

PHP:
echo $FONT;

hast das wir als output gewertet. das würde ich einfach mal löschen.
 
Noch der Vollständigkeithalber sei gesagt, dass das Poblem darin bestand, dass vor dem header etwas ausgegeben wurde...
Lösung: Vor dem HEADER darf NICHTS ausgegeben werden...
 
Alles klar ... wuste nicht, dass dieses echo auch als html Ausgabe gilt...
Nochmals vielen Dank
C

Was spuckt denn PHP mittels "echo" aus

In den Tuts, die ich gelesen hab, war das immer HTML... ^^

Alles was letztlich beim Browser landet, also was der Client empfängt IST html...
Es sei denn man hat noch JS und so mit auf der Site, aber das lass ich ma aussen vor...
 
Zurück