• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

php-Kontaktformular: nicht alle Felder werden gesendet

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
Heo,

bin gerade dabei ein php-formular für meine Zwecke anzupassen...leider klappt das nicht ganz
Code:
 <?php
  // Wenn das Formular abgeschickt wurde, füre den Inhalt der Klammern aus aus.
    if(isset($_POST['ueberpruefung'])) 
  { 
  // allesok wird auf 1 gesetzt, bekommt also einen Wert. Später wird damit abgefragt, ob Name und Email ausgefüllt wurden.
  $allesok = 1; 
  
 // Hier wird geprüft ob Name leer ist. Ist dies der Fall, wird allesok auf 0 gesetzt (Kein Wert mehr) und ein Fehlertext erstellt, der im Formular ausgegeben wird.
 if(empty($_POST['name'])){
  $allesok = 0; 
  $error[name] = "Bitte einen Namen eingeben!";} 
  
   if(empty($_POST['kommentar'])){
  $allesok = 0; 
  $error[kommentar] = "Bitte eine Nachricht eingeben!";} 
  
 //Hier wird geprüft ob Email leer ist. Ist dies der Fall, wird allesok auf 0 gesetzt (Kein Wert mehr) und ein Fehlertext erstellt, der im Formular ausgegeben wird.
  if(empty($_POST['email'])){
  $allesok = 0; 
  $error[email] = "Bitte eine Email eingeben!";} 
   
  // Hier wird die IF-Bedingung von ganz oben geschlossen.
  }
  
 // Hier wird geprüft ob allesok einen Wert hat. (1) Ist dies der Fall, können die Variablen $_POST['name'] und $_POST['email'] weiter verarbeitet werden.
  if($allesok){ 
  
  // Überprüfte Eingaben aus dem Formular ausgeben. An dieser Stelle kann auch mit Mysql gearbeitet werden oder so etwas...
  
 echo "Ihre Mitteilung wurde erfolgreich versendet."; 
  echo "<br>";
 echo "Name: ".$_POST['name'];
  echo "<br>";
  echo "Email: ".$_POST['email'];
  echo "<br>";
    echo "Nachricht: ".$_POST['kommentar'];
      echo "<br>";
  
  // Hier wird die IF-Bedingung von oben geschlossen
   mail('[email protected]',"Nachricht von ".$_POST['name'],$_POST['email'],"Nachricht:", $_POST['kommentar']);    }
   mail($email , $betreff , $inhalt2 , "From: " . $absemail);
  // Ist der Wert 1 nicht vorhanden, zeige das Formular.
  else
  {
  ?>
  
  <form name="Tutorial" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
 
 <?php echo $error['name'];?><br>
  Name:<br>
  <input name="name" type="text" size="25" value="<?php echo $_POST['name'];?>"> <br>
 
 <?php echo $error['email'];?><br>
    Email:<br>
  <input name="email" type="text" size="25" value="<?php echo $_POST['email'];?>"> <br>
 

 <?php echo $error['kommentar'];?><br>
    Ihre Nachricht:<br>
  <textarea name="kommentar"  rows="5" cols="40"><?php echo $_POST['kommentar'];?></textarea> 
  <br>
  
 <input type="hidden" name="ueberpruefung" value="1"> 
  <input type="submit" name="Tutorial" value="Absenden">
  </form>
  
  <?php
 // Der Else-Zweig wird geschlossen
  }
  ?>

leider wird nur die email-adresse übertragen und sonst nichts :(
jemand ne idee?
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
Code:
<?php
	if(isset($_POST['ueberpruefung'])) {
		$allesok = 1; 
		if(empty($_POST['name'])) {
			$allesok = 0; 
			$error[name] = "Bitte einen Namen eingeben!";
		} 
		if(empty($_POST['kommentar'])) {
			$allesok = 0; 
			$error[kommentar] = "Bitte eine Nachricht eingeben!";
		}
		if(empty($_POST['email'])) {
			$allesok = 0; 
			$error[email] = "Bitte eine Email eingeben!";
		} 
	}
	[COLOR="Red"]if($allesok){[/COLOR]
		echo "Ihre Mitteilung wurde erfolgreich versendet." . "<br>";
		echo "Name: ".$_POST['name'] . "<br>";
		echo "Email: ".$_POST['email'] . "<br>";
		echo "Nachricht: ".$_POST['kommentar'] . "<br>";
		mail('[email protected]',"Nachricht von ".$_POST['name'],$_POST['email'],"Nachricht:", $_POST['kommentar']);
	[COLOR="SeaGreen"]}
	mail($email , $betreff , $inhalt2 , "From: " . $absemail);
		// Ist der Wert 1 nicht vorhanden, zeige das Formular.
	else {[/COLOR]
?>
<form name="Tutorial" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
	<?php echo $error['name'];?><br>
	Name:<br>
	<input name="name" type="text" size="25" value="<?php echo $_POST['name'];?>"><br>
	<?php echo $error['email'];?><br>
	Email:<br>
	<input name="email" type="text" size="25" value="<?php echo $_POST['email'];?>"><br>
	<?php echo $error['kommentar'];?><br>
	Ihre Nachricht:<br>
	<textarea name="kommentar"  rows="5" cols="40"><?php echo $_POST['kommentar'];?></textarea><br>

	<input type="hidden" name="ueberpruefung" value="1">
	<input type="submit" name="Tutorial" value="Absenden">
</form>
<?php
}
?>

Da sind ein paar kleinere Fehler drin:
rot : Funktionieren würde if($allesok = 1)
grün : Hier ist mehreres falsch, eine if-Schaltung sieht so aus: if() {} else {} - da darf nur in den {} etwas stehen, nicht vor oder nach else.

Wieso hast du zweimal mail() drin?

Teste mal das hier (alle obigen "Fehler" beseitigt):
Code:
<?php
	if(isset($_POST['ueberpruefung'])) {
		$allesok = 1; 
		if(empty($_POST['name'])) {
			$allesok = 0; 
			$error[name] = "Bitte einen Namen eingeben!";
		} 
		if(empty($_POST['kommentar'])) {
			$allesok = 0; 
			$error[kommentar] = "Bitte eine Nachricht eingeben!";
		}
		if(empty($_POST['email'])) {
			$allesok = 0; 
			$error[email] = "Bitte eine Email eingeben!";
		} 
	}
	if($allesok = 1){
		echo "Ihre Mitteilung wurde erfolgreich versendet." . "<br>";
		echo "Name: ".$_POST['name'] . "<br>";
		echo "Email: ".$_POST['email'] . "<br>";
		echo "Nachricht: ".$_POST['kommentar'] . "<br>";
		mail('[email protected]',"Nachricht von ".$_POST['name'],$_POST['email'],"Nachricht:", $_POST['kommentar']);
	} else {
?>
<form name="Tutorial" method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
	<?php echo $error['name'];?><br>
	Name:<br>
	<input name="name" type="text" size="25" value="<?php echo $_POST['name'];?>"><br>
	<?php echo $error['email'];?><br>
	Email:<br>
	<input name="email" type="text" size="25" value="<?php echo $_POST['email'];?>"><br>
	<?php echo $error['kommentar'];?><br>
	Ihre Nachricht:<br>
	<textarea name="kommentar"  rows="5" cols="40"><?php echo $_POST['kommentar'];?></textarea><br>

	<input type="hidden" name="ueberpruefung" value="1">
	<input type="submit" name="Tutorial" value="Absenden">
</form>
<?php
	}
?>

PS: Am besten du benutzt die Tabtaste um den Code zu strukturieren. ;)
 

img

Celler Dickstiel
Registriert
05.06.06
Beiträge
807
wenn ich das einfüge und die seite aufrufe kommt direkt:

. anfragen

Ihre Mitteilung wurde erfolgreich versendet.
Name:
Email:
Nachricht:


;)
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
Teste doch mal das

Code:
<?php
	$betreff = "Kontaktformular";
	
	$vn = "";
	$ve = "";
	$vh = "";
	$vc = "";
	if($_POST != false){
		$vn = $_POST['name'];
		$ve = $_POST['email'];
		$vc = $_POST['inhalt'];
	}	
	echo "\n";
	echo '<div class="kontakt">' . "\n";
		echo "<form action=\"$_SERVER[´PHP_SELF´]\" method=\"post\">" . "\n";
			echo '<div class="info">' . "\n";
				echo 'Name: <input name="name" type="text" value="' . $vn . '" size="30" />' . "\n";
				echo 'E-Mail: <input name="email" type="text"value="' . $ve . '" size="30" />' . "\n";
				echo '<div class="hc">Test: <input name="test" type="text" size="30" /></div>' . "\n";
			echo '</div>' . "\n";
			echo '<div class="inhalt">' . "\n";
				echo 'Kommentar: <textarea name="inhalt" rows="10" cols="40">' . $vc . '</textarea>' . "\n";
			echo '</div>' . "\n";
			echo '<input type="reset" /><input type="submit" />' . "\n";
		echo '</form>';

	if($_POST != false){
		if(empty($_POST['test'])){
			if(empty($_POST['name'])){
				echo "Bitte den Namen angeben";
				if(empty($_POST['inhalt'])){
					echo "<br />\n" .  "Bitte einen Kommentar hinzuf&uuml;gen";
				}
			} else {
				if(empty($_POST['inhalt'])){
					echo "Bitte einen Kommentar hinzuf&uuml;gen";
				} else {
					echo "Ihre Mitteilung wurde gesendet";

					[COLOR="Red"]$empfaenger = "";[/COLOR]

					$text = $_POST['name'] . " (" . $_POST['email'] . "), schrieb: " . "\n\"" . $_POST['inhalt'] . "\"";
					$absender = "From: $email";
				
					@mail($empfaenger , $betreff , $text , $absender);
				}
			}
		} else {
			echo 'Bitte keine Text im Feld "Test" eingeben.';
		}
	} else {
		echo '<span style="font-size: 10pt;">' . "Name, Email und Kommentar m&uuml;ssen ausgef&uuml;llt werden." . '</span>';
	}		
	echo "\n";
	echo '</div>';
?>

wenn du im HTML <input type="hidden"> schreibst, dann werden Spambots das nicht ausfüllen.
Wenn du per CSS div.hc als display: none; oder visibility: hidden; beschreibst, dann geht das.
 

Ubu

Tydemans Early Worcester
Registriert
29.07.07
Beiträge
388
Was mir zu dem oberen Programm so spontan noch einfällt:

Code:
echo 'Name: <input name="name" type="text" value="' . $vn . '" size="30" />' . "\n";
Bei dieser "Ausgabe" (im Textfeld) umbedingt und immer htmlspecialchars() dazufügen. Sonst kann man nämlich andere Befehle in deine Seite schmuggeln, die nicht dort hin gehören. Eindeutig ein Sicherheitsrisiko! htmlspecialchars() wandelt z.b. alle "<" oder " (bzw. maskiert sie mit einem Backslash) in ihre HTML Pendants um.

Gelöst:
Code:
echo 'Name: <input name="name" type="text" value="' .htmlspecialchars($vn) . '" size="30" />' . "\n";


Das Vorhandensein der E-Mail Adresse wird bei deinem Programm nicht überprüft, es sei denn ich hätte es übersehen. Abgesehen vom Vorhandensein kann man auch noch die Länge bzw. den Aufbau der Mail Adresse überprüfen, mit so gennanten Regular Expressions. Dann wird vorgeben, das eine E-Mail Adresse so auszusehen hat: [email protected](x). Ich habe gerade keine Zeit, ich poste die RegEx nacher.

Fortsetzung folgt...
 
  • Like
Reaktionen: iMacuser91

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
[...]
Bei dieser "Ausgabe" (im Textfeld) umbedingt und immer htmlspecialchars() dazufügen.
[...]
Gelöst:
Code:
echo 'Name: <input name="name" type="text" value="' .htmlspecialchars($vn) . '" size="30" />' . "\n";

Das Vorhandensein der E-Mail Adresse wird bei deinem Programm nicht überprüft, es sei denn ich hätte es übersehen.
[...]

Danke sehr. Ich hab es bei mir nun geändert, wenn die Fortsetzung kommt poste ich das Endergebnis.
Stimmt, es wird nicht nach der Emailadresse gefragt, da ich es damals "nur" als Blogkommentarfunktion geschrieben habe und die Emailadresse als nicht zwingend sah.
Ich werde das auch noch hinzufügen.

Geht das mit htmlspecialchars() auch in einem leeren Textarea-Tag (siehe oben)?

Hier, das sollte es dann sein:
Code:
<?php
	$betreff = "Kontaktformular";
	
	$vn = "";
	$ve = "";
	$vh = "";
	$vc = "";
	if($_POST != false){
		$vn = $_POST['name'];
		$ve = $_POST['email'];
		$vc = $_POST['inhalt'];
	}	
	echo "\n";
	echo '<div class="kontakt">' . "\n";
		echo "<form action=\"$_SERVER[´PHP_SELF´]\" method=\"post\">" . "\n";
			echo '<div class="info">' . "\n";
				echo 'Name: <input name="name" type="text" value="' .htmlspecialchars($vn) . '" size="30" />' . "\n";
				echo 'E-Mail: <input name="email" type="text"value="' .htmlspecialchars($ve) . '" size="30" />' . "\n";
				echo '<div class="hc">Test: <input name="test" type="text" size="30" /></div>' . "\n";
			echo '</div>' . "\n";
			echo '<div class="inhalt">' . "\n";
				echo 'Kommentar: <textarea name="inhalt" rows="10" cols="40">' .htmlspecialchars($vn) . '</textarea>' . "\n";
			echo '</div>' . "\n";
			echo '<input type="reset" /><input type="submit" />' . "\n";
		echo '</form>';

	if($_POST != false){
		if(empty($_POST['test'])){
			if(!empty($_POST['email'])){
				if(empty($_POST['name'])){
					echo "Bitte den Namen angeben";
					if(empty($_POST['inhalt'])){
						echo "<br />\n" .  "Bitte einen Kommentar hinzuf&uuml;gen";
					}
				} else {
					if(empty($_POST['inhalt'])){
						echo "Bitte einen Kommentar hinzuf&uuml;gen";
					} else {
						echo "Ihre Mitteilung wurde gesendet";
	
						$empfaenger = "";
	
						$text = $_POST['name'] . " (" . $_POST['email'] . "), schrieb: " . "\n\"" . $_POST['inhalt'] . "\"";
						$absender = "From: $email";
					
						@mail($empfaenger , $betreff , $text , $absender);
					}
				}
			} else {
				echo 'Bitte eine Emailadresse angeben.';
			}
		} else {
			echo 'Bitte keine Text im Feld "Test" eingeben.';
		}
	} else {
		echo '<span style="font-size: 10pt;">' . "Name, Email und Kommentar m&uuml;ssen ausgef&uuml;llt werden." . '</span>';
	}		
	echo "\n";
	echo '</div>';
?>

PS: Kann man die Höhe von dem CODE-Tag hier beeinflussen?
 

Ubu

Tydemans Early Worcester
Registriert
29.07.07
Beiträge
388
Sorry für die Verspätung, aber sieht doch gleich viel besser aus ;).

Hier noch mein Nachtrag:
So sollte das Muster für die Regular Expressions aussehen:
Code:
$regmuster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
Das heißt, man darf vorne nur Zahlen von 0-9, Buchstaben a-z bzw. A-Z sowie . und _ verwenden, dann muss ein @ kommen. Darauf wieder Groß/Kleinbuchstaben/Zahlen/./_, darauf muss ein Punkt sein und da dann die Endung hinten dran. Die darf zwischen 2 und 4 Zeichen lang sein und nur aus A-Z und a-z bestehen.

Um dieses Muster anzuwenden, braucht man die Funktion preg_match(Suchmuster, Zeichenkette);. Wenn es keine Übereinstimmung mit dem Suchmuster gibt, dann gibt die Funktion 0 zurück, sonst immer mehr wie 1.

In deinem Programm angewandt, sieht das dann so aus:
Code:
if(!empty($_POST['email']) && preg_match($regmuster, $_POST['email'])>0){
Das && ist übrigens zum Verknüpfen von 2 Bedingungen, es müssen beide Wahr sein.

Ausserdem kann man überprüfen, ob die Mail wirklich vom PHP Server versandt wurde, indem du ein @ vor mail(); setzt. In deinem Programm:
Code:
if(@mail($empfaenger , $betreff , $text , $absender){
echo "Die Mail wurde erfolgreich versandt. '";
echo "Vielen Dank für Ihr Kommentar!";
}else{
echo "Es gab leider einen Fehler beim Versandt, bitte versuchen sie es erneut.";
}

Ein weiteres, kleines, unwichtiges Detail:
Du kannst eine Mindestlänge des Kommentars erzwingen (in dem Beispiel vielleicht nicht so sinnvoll). Das würde dann so funktionieren:
Code:
if(strlen($_POST("inhalt")<5) [...]
Dann müsste der Besucher mindestens 5 Zeichen tippen.

Mehr fällt mir im Moment nicht ein, aber allgemein hätte ich es so wie das allererste Beispiel (vom Threadstarter) gelöst, weil ich mir dann die verschachtelten if() erspare. Ist aber natürlich Geschmacksache.

Sollte irgendwas nicht stimmen/funktionieren, bitte sofort posten. Mein Code Gedächtnis ist nicht optimal :p.
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
S[...] darauf muss ein Punkt sein und da dann die Endung hinten dran. Die darf zwischen 2 und 4 Zeichen lang sein und nur aus A-Z und a-z bestehen.
Was wäre denn mit .co.uk oder .co.za oder co.ja, all diese wären ja länger als 4 (nämlich 5) Zeichen, oder zählt der Punkt nicht?
Mehr fällt mir im Moment nicht ein, aber allgemein hätte ich es so wie das allererste Beispiel (vom Threadstarter) gelöst, weil ich mir dann die verschachtelten if() erspare.

Ich liebe if() ;)
Nein, mir fiel damals (ist schon etwas her, dass ich das geschrieben hab) kein anderer Weg ein (hatte erst angefangen mit PHP).

EDIT: Leider wird mir nur eine weiße Seite ohne Quelltext angezeigt:
Code:
<?php
	$betreff = "Kontaktformular";
	
	$regmuster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";
	
	$vn = "";
	$ve = "";
	$vh = "";
	$vc = "";
	if($_POST != false){
		$vn = $_POST['name'];
		$ve = $_POST['email'];
		$vc = $_POST['inhalt'];
	}	
	echo "\n";
	echo '<div class="kontakt">' . "\n";
		echo "<form action=\"$_SERVER[´PHP_SELF´]\" method=\"post\">" . "\n";
			echo '<div class="info">' . "\n";
				echo 'Name: <input name="name" type="text" value="' .htmlspecialchars($vn) . '" size="30" />' . "\n";
				echo 'E-Mail: <input name="email" type="text"value="' .htmlspecialchars($ve) . '" size="30" />' . "\n";
				echo '<div class="hc">Test: <input name="test" type="text" size="30" /></div>' . "\n";
			echo '</div>' . "\n";
			echo '<div class="inhalt">' . "\n";
				echo 'Kommentar: <textarea name="inhalt" rows="10" cols="40">' .htmlspecialchars($vn) . '</textarea>' . "\n";
			echo '</div>' . "\n";
			echo '<input type="reset" /><input type="submit" />' . "\n";
		echo '</form>';

	if($_POST != false){
		if(empty($_POST['test'])){
			if(!empty($_POST['email']) && preg_match($regmuster, $_POST['email'])>0){
				if(empty($_POST['name'])){
					echo "Bitte den Namen angeben";
					if(empty($_POST['inhalt'])){
						echo "<br />\n" .  "Bitte einen Kommentar hinzuf&uuml;gen";
					}
				} else {
					if(empty($_POST['inhalt'])){
						echo "Bitte einen Kommentar hinzuf&uuml;gen";
					} else {
						echo "Ihre Mitteilung wurde gesendet";
	
						$empfaenger = "";
	
						$text = $_POST['name'] . " (" . $_POST['email'] . "), schrieb: " . "\n\"" . $_POST['inhalt'] . "\"";
						$absender = "From: $email";
					
						if(@mail($empfaenger , $betreff , $text , $absender){
							echo "Die Mail wurde erfolgreich versandt." . "\n";
							echo "Vielen Dank für Ihr Kommentar!";
						}else{
							echo "Es gab leider einen Fehler beim Versandt, bitte versuchen sie es erneut.";
						}
					}
				}
			} else {
				echo 'Bitte eine Emailadresse angeben.';
			}
		} else {
			echo 'Bitte keine Text im Feld "Test" eingeben.';
		}
	} else {
		echo '<span style="font-size: 10pt;">' . "Name, Email und Kommentar m&uuml;ssen ausgef&uuml;llt werden." . '</span>';
	}		
	echo "\n";
	echo '</div>';
?>
 

Ubu

Tydemans Early Worcester
Registriert
29.07.07
Beiträge
388
Was wäre denn mit .co.uk oder .co.za oder co.ja, all diese wären ja länger als 4 (nämlich 5) Zeichen, oder zählt der Punkt nicht?
Ghar, stimmt. Daran habe ich jetzt nicht gedacht.

So sollte es wieder stimmten:
Code:
$regmuster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z-.]{2,5}$/";

Ich muss umbedingt wieder was in PHP machen, ich bin schon total eingerostet.

Ich liebe if() ;)
Nein, mir fiel damals (ist schon etwas her, dass ich das geschrieben hab) kein anderer Weg ein (hatte erst angefangen mit PHP).

Ich mag if() auch, aber ich habe eine Abneigung gegen verschachtelte ifs, keine Ahnung wieso.
Vielleicht weil ein Freund von mir immer, wo es möglich war, verschachtelte ifs verwendet hat - und ich durfte immer den Fehler in dem Chaos suchen ;).
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
Ich wüsste grade nicht, wie ich das ohne die ganzen if() Abfragen machen sollte, vielleicht könntest du das mal verdeutlichen - sauberer und übersichtlicher ist immer gut bei Code ;)
 

iMacuser91

Kaiser Wilhelm
Registriert
21.12.06
Beiträge
174
Ich entschuldige mich für den Doppelpost...

Sollte es dann für $regmuster so heißen:

Code:
$regmuster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z-.]{2,5}$/";

oder sogar (bei all diesen Billigdomains)

Code:
$regmuster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z0-9-.]{2,7}$/";

und ist es 2 bis 5 oder 2 oder 5
 

Ubu

Tydemans Early Worcester
Registriert
29.07.07
Beiträge
388
Yep, müsste stimmen.

Natürlich braucht man if() abfragen, aber man kann sich das verschachteln sparen ;).

Edit: 2 bis 5.
 
Zuletzt bearbeitet:

Ubu

Tydemans Early Worcester
Registriert
29.07.07
Beiträge
388
Hier habe ich ein altes Programm gefunden, es verfolgt aber einen anderen Ansatz als wie deines, denn dieses ist für nahezu alle Formularfelder geeignet.

Kommentare gibts leider keine, weil ich ein fauler Sack bin o_O.

Achtung! Es gibt 2 Vorraussetzungen: Es muss ein Eingabefeld geben, dass "email" heißt und der PHP-Code muss über dem Formular stehen.
Code:
<?php
if($_POST != false){
	$mailemfpaenger="[email protected]";
	$inhalt="Folgendes Kommentar wurde abgegeben: \n\n\n";
	$betreff="Kommentar-Mail von www.meinerhompage.at";
	$regmuster="/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z-.]{2,5}$/";
	
	foreach($_POST as $objektname => $wert){
		$inhalt.="Zu $objektname sagte der Besucher $wert \n";
	}
	$inhalt=stripslashes($inhalt);
	
	if(!empty($_POST["email"]) && preg_match($regmuster,$_POST["email"])>0){
		$sender=$_POST["email"];
		if(@mail($mailemfpaenger, $betreff, $inhalt, "From: $sender")) {
			echo "Vielen Dank f&uuml;r Ihr Kommentar!";
                        //Die nächsten 2 Zeilen können weggelassen bzw. erweitert werden, wenn sie das Layout kaputt machen.
			echo "</body></html>";
			exit();
		}else{
			echo "Es gab leider einen Fehler beim Senden. Bitte versuchen Sie es erneut!";
		}		
	}else{
		echo "Die E-Mail Adresse ist leider nicht vorhanden oder ung&uuml;ltig!";
	}	
}
?>

Bei Fragen zum Code einfach posten ;).