online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon dorionas vom 15.09.2020, 00:30 Options

Kontaktformular, Problem mit der Weiterleitung (Header)

Hallo,

mein Kontaktformular läuft soweit ganz gut, aber es gibt ein Fehleranzeige wenn ich mein Formular abschicke.

Folgendes wird angezeigt:

Warning: Cannot modify header information - headers already sent by (output started at /home/netsh10536/html/test/kontakt.php:1) in /home/netsh10536/html/test/kontakt.php on line 19

Line 19 ist die Zeile wo mein header drinsteht.

Angezeigt wird darunter die Kontaktseite und nicht die Dank-Seite.

Hier das script:

<?php

if (!empty($_POST['email'])) {

$datum = date("j.n.y");

$mailbody = $_POST['Name'] . " schrieb am $datum\n\n";

$mailbody .= $_POST['botschaft'] . "\n\n";

$mailbody .= "Bewertung der Homepage: " . $_POST['bewertung'] . "\n";

$mailbody = stripslashes($mailbody);

$email = $_POST['email'];

if (@mail("kontakt@meineseite.de", "E-Mail-Kontakt von www.meineseite.de", $mailbody, "From: $email")) {

header("Location: http://www.meineseite.de/test/email_dank.html");

}

else {

echo "<p>Leider gab es einen Sendefehler!</p>\n";

}

}

?>

Ich weiß nicht was daran falsch ist. Habe auch schon andere Formulare gesehen, mit der selben Zeile. Ich konnte keinen Fehler feststellen.

Kann mir jemand nen Tip geben woran es liegt?

Danke schon mal

Dorionas


Antwort schreiben

Antwort 1 von Klassenkasper vom 15.09.2020, 00:45 Options

Aloha
Ist das ein eigenständiges Script? Oder PHP Befehle in einem HTML Script eingebettet?
Ich hatte solch einen Fehler auch einmal. Bei mir lag es daran, dass ich vor den PHP Befehlen den <head> Bereich des HTML Scripts stehen hatte. Somit erhält der Server schon die Header Informationen durch den HTML <head> und schmeißt die Fehlermeldung.

Wenn das so bei dir ist, setze mal den PHP Teil ganz nach oben vor den <head> Bereich, dann sollte es eigentlich laufen.

Gruß
Des Kasperle

Antwort 2 von Dorionas vom 15.09.2020, 11:27 Options

Das PHP-Script ist vor dem HTML-Code ganz am Anfang.

Antwort 3 von DeluxeStyle vom 15.09.2020, 11:30 Options

zeig mal bitte den ganz quellcode
so lässt sich der Fehler vielleicht besser finden

Antwort 4 von Klassenkasper vom 15.09.2020, 14:23 Options

Schau dir das hier mal an, vielleicht hilft dir das schon weiter.

Antwort 5 von Dorionas vom 15.09.2020, 16:44 Options

Also hier ist der gesamte code:


<?php

if (!empty($_POST['email'])) {

$datum = date("j.n.y");

$mailbody = $_POST['Name'] . " schrieb am $datum\n\n";

$mailbody .= $_POST['botschaft'] . "\n\n";

$mailbody .= "Bewertung der Homepage: " . $_POST['bewertung'] . "\n";

$mailbody = stripslashes($mailbody);

$email = $_POST['email'];

if (@mail("kontakt@meinepage.de", "E-Mail-Kontakt von www.meinepage.de", $mailbody, "From: $email")) {

header("Location: http://www.meinepage.de/test/email_dank.html");

}

else {

echo "<p>Leider gab es einen Sendefehler!</p>\n";

}

}

?>

<!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>
<title>meinepage - Kontakt</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="meinepage">
<meta content="meinepage" name="keywords">
<meta name=robots content="noindex, nofollow">
<meta name="content-language" content="de">
<meta name="publisher" content="meinepage">
<meta name="author" content="meinepage">
<link href="css/screen.css" rel="stylesheet" type="text/css" />

<script type="text/javascript">

<!--

function chkFormular() {

var a="";

if(document.Kontakt.Name.value == "") {

a+=("Bitte geben Sie Ihren Namen ein!\n");

document.Kontakt.Name.focus();

}

if(document.Kontakt.email.value == "") {

a+=("Bitte tragen Sie Ihre E-Mail-Adresse ein!\n");

document.Kontakt.email.focus();

}

if(document.Kontakt.email.value.indexOf("@") == -1) {

a+=("Keine gültige E-Mail-Adresse!\n");

document.Kontakt.email.focus();

}

if(document.Kontakt.botschaft.value == "") {

a+=("Bitte füllen Sie das Betreff-Feld aus!\n");

document.Kontakt.botschaft.focus();

}

if (a!="") {

alert(a);

return false;

}

}

//-->

</script>

<style type="text/css">
<!--
-->
</style>
</head>
<body>
<div id="container">
<div id="header"><h1><span>meinepage</span></h1>
<div id="navigation"><ul>
<li><a href="index.html">Home</a></li>
<li><a href="mich.html">&Uuml;ber Mich</a></li>
<li><a href="projekte.php">Projekte</a></li>
<li><a href="kontakt.php">Kontakt</a></li>
</ul>
</div>
</div>

<div id="leftside">
<div id="secContent">
</div>
</div>
<div id="rightside"><div id="mainContent"><div id="mainAuftrag">
<h2>Kontakt</h2>

<form name="Kontakt" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" onSubmit="return chkFormular()">



<table id="auftrag" border=0">
<tr>
<td>Name:*</td>
<td><input type="text" name="Name" value="<?php

if (isset($_POST['Name'])) {

echo htmlspecialchars(stripslashes($_POST['Name']));

}

?>" />
</td>
</tr>
<tr>
<td>E-Mail:*</td>
<td><input type="text" name="email" value="<?php

if (isset($_POST['email'])) {

echo htmlspecialchars(stripslashes($_POST['email']));

}

?>" />
</td>
</tr>
</table>
<p>Ihr Betreff:*<br />

<textarea name="botschaft" cols="25" rows="5"><?php

if (isset($_POST['botschaft'])) {

echo stripslashes($_POST['botschaft']);

}

?>

</textarea><br /></p>

<p>Wie finden Sie meine Homepage?<br>

<input type="radio" name="bewertung" value="sehr gut">sehr gut<br>

<input type="radio" name="bewertung" value="gut">gut<br>

<input type="radio" name="bewertung" value="geht so">geht so<br>

<p><input type="submit" value="Abschicken" name="submit"/></p>
<p>* Pflichtfeld</p>
</form>

</div>
</div></div>
<div id="footer"><div id="footerContent"><a href="impressum.html">Impressum</a> - meinepage&copy; 2008</div></div>
</div>
</body>
</html>


Bin ja mal gespannt, ob ihr den Fehler findet.

Antwort 6 von Computerfreaki vom 15.09.2020, 19:10 Options

Lager doch ma den ganzen PHP-Code im oberen Teil in eine Datei aus. Z.B. formmailer.php. Und dann schreibst du ins action-Attribut einfach den Pfad zu dieser Datei rein. Dann sollte es eigentlich funktionieren

Antwort 7 von Dorionas vom 16.09.2020, 13:20 Options

Hallo,

habe den PHP-Code habe ich nun in eine Formmailer.php ausgelagert, und in das action-attribut die entsprechende Adresse eingefügt.

Ergebniss:

Es funktioniert!!!

Also nochmals vielen Dank für den Tip.

Trotzdem würd ich gerne wissen warum das vorher nicht funktioniert hat.

Kann es sein, dass es mit der vorherigen Zeile zu tun hat:

action="<?php echo $_SERVER['PHP_SELF']; ?>"

Bedeutet diese Zeile nicht, dass der Server das Formular abschickt, und ich dann mit meinem PHP-Code, dies nochmal ausführe?

Weil, laut der Fehleranzeige, wurde ja irgendwas schon vorher ausgeführt.

Ich würd mcih freuen, wenn mir jemand erklären könnte, warum es nun mit der ausgelagerten Datei funktioniert, und warum es vorher nicht ging.

Vielen Dank

Dorionas

Antwort 8 von Computerfreaki vom 16.09.2020, 14:14 Options

Nein ich glaub du hättest das action-Attribut leer lassen müssen. Dann sollte es funktionieren.

Ähnliche Themen

header der Script-aufrufenden Software
Hyco  29.06.2007 - 89 Hits - 5 Antworten

PHP-Header im Browser sehen?
Golanul  06.10.2007 - 72 Hits - 5 Antworten

PHP-Weiterleitung ohne Referrer-Übergabe
Nadine80  13.08.2008 - 133 Hits - 3 Antworten

header für eine hochzuladende Datei bestimmen
Martina  08.07.2008 - 69 Hits - 7 Antworten

Weiterleitung inkl Formularfelder
IchbraucheHilfe  12.07.2008 - 40 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026