1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

php-Kontaktformular: nicht alle Felder werden gesendet

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von img, 22.05.08.

  1. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    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('jan@img-media.de',"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?
     
  2. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    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('jan@img-media.de',"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('jan@img-media.de',"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. ;)
     
  3. img

    img Celler Dickstiel

    Dabei seit:
    05.06.06
    Beiträge:
    805
    wenn ich das einfüge und die seite aufrufe kommt direkt:

    . anfragen

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


    ;)
     
  4. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    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.
     
  5. Ubu

    Ubu Tydemans Early Worcester

    Dabei seit:
    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: xxxx@xxxx.xx(x). Ich habe gerade keine Zeit, ich poste die RegEx nacher.

    Fortsetzung folgt...
     
    iMacuser91 gefällt das.
  6. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    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?
     
  7. Ubu

    Ubu Tydemans Early Worcester

    Dabei seit:
    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.
     
  8. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    21.12.06
    Beiträge:
    174
    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?
    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>';
    ?>
     
  9. Ubu

    Ubu Tydemans Early Worcester

    Dabei seit:
    29.07.07
    Beiträge:
    388
    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 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 ;).
     
  10. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    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 ;)
     
  11. iMacuser91

    iMacuser91 Kaiser Wilhelm

    Dabei seit:
    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
     
  12. Ubu

    Ubu Tydemans Early Worcester

    Dabei seit:
    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.
     
    #12 Ubu, 23.05.08
    Zuletzt bearbeitet: 23.05.08
  13. Ubu

    Ubu Tydemans Early Worcester

    Dabei seit:
    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="deine@mail.com";
    	$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 ;).
     

Diese Seite empfehlen