php-beginnerin: Formular:bekomme keine Email

Hallo Leute!

Habe ein Php-Formular erstellt, jedoch wird mir keine Mail zugeschickt...was hab ich bloß falsch gemacht???

glg ein Php-Neuling

  
<?php  
  
if(isset($_POST['abschicken'])){  
	while(list($feld,$wert)=each($_POST)){  
  
		$wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);  
		$$feld=$wert;  
  
		if($feld!="abschicken") $mailnachricht.=ucfirst($feld).": $wert\n";  
	}  
	$mailnachricht.="\nDatum/Zeit: ". date("d.m.Y H:i:s");  
  
	empty($nachname) ? $err[] = "<p>- Bitte den Nachnamen angeben.</p>" : false;  
	empty($vorname) ? $err[] = "<p>- Bitte den Vornamen angeben.</p>" : false;  
	empty($email) ? $err[] = "<p>- Bitte die Email-Adresse angeben.</p>" : false;  
	empty($text) ? $err[] = "<p>- Welchen Wunsch haben Sie? Bitte den Text eingeben.</p>" : false;  
  
	if(!empty($err)) {  
		echo "<p>Bitte korrigieren Sie folgende Fehler:</p>";  
		foreach($err as $fehler){  
			echo $fehler;  
		} ?>  
		<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">  
	  <table width="50%" border="3" cellpadding="3" cellspacing="1" align="left" bgcolor="#bfbfbf">  
		<tr><td width="140" height="20" align="left">Nachname:</td><td align="left"><input type="text" name="nachname" value="<?php echo $nachname; ?>" style="width:50%;" /></td></tr>  
		<tr><td align="left">Vorname:</td><td align="left"><input type="text" name="vorname" value="<?php echo $vorname; ?>" style="width:50%" /></td></tr>  
		<tr><td align="left">E-Mail:</td><td align="left"><input type="text" name="email" value="<?php echo $email; ?>" style="width:50%" /></td></tr>  
		<tr><td align="left">Ihre Nachricht:</td><td align="left"><textarea rows="12"  style="width:75%" name="text"><?php echo $text; ?></textarea></td><td> </td></tr>  
		<tr><td colspan="2" align="center" nowrap><br /><input type="submit" name="abschicken" class="button" value="senden" style="width:20%" /></td></tr>  
	  </table>  
		</form>  
<?php  
	} else {  
		$mailbetreff="Kontaktformular ".$_SERVER['HTTP_HOST'];  
		  
		echo (mail("meine.mailadresse@gmx.at", $mailbetreff, $mailnachricht, "From: $email")) ? "<p>Vielen Dank f&uuml;r Ihre eMail!</p>": "<p>Ein Fehler ist aufgetreten!</p>";  
	}  
  
} else { ?>  
		<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">  
	  <table width="50%" border="3" cellpadding="3" cellspacing="1" align="left" bgcolor="#bfbfbf">  
		<tr><td width="140" height="20" align="left">Nachname:</td><td align="left"><input type="text" name="nachname" value="" style="width:50%;" /></td></tr>  
		<tr><td align="left">Vorname:</td><td align="left"><input type="text" name="vorname" value="" style="width:50%" /></td></tr>  
		<tr><td align="left">E-Mail:</td><td align="left"><input type="text" name="email" value="" style="width:50%" /></td></tr>  
		<tr><td align="left">Ihre Nachricht:</td><td align="left"><textarea rows="12"  style="width:75%" name="text"></textarea></td><td> </td></tr>  
		<tr><td colspan="2" align="center" nowrap><br /><input type="submit" name="abschicken" value="senden" style="width:20%" /></td></tr>  
	  </table>  
		</form>  
	  
<?php  
}  
?>  

  1. @@php-beginnerin:

    nuqneH

    was hab ich bloß falsch gemacht???

    Mindestens 3 Dinge. Der Priorität nach:

    1.

    <input type="text" name="nachname" value="<?php echo $nachname; ?>" style="width:50%;" />

      
    Du darfst NIEMALS Nutzereingaben oder andere Werte fremder Herkunft unbearbeitet in HTML-Code schreiben. [NIEMALS](http://de.wikipedia.org/wiki/Cross-Site-Scripting).  
      
    Das Mindeste wäre die HTML-[kontextgerechte](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel) Behandlung mit `[link:http://php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars()]`{:.language-php}:  
      
    ~~~php
      
    <input type="text" name="nachname" value="<?php echo htmlspecialchars($nachname); ?>" />
    

    BTW, sämltliche Stilangaben sollten im Stylesheet stehen, nicht inline in @style-Attributen.

    2.

    if(!empty($err)) {
    echo "<p>Bitte korrigieren Sie folgende Fehler:</p>";
    foreach($err as $fehler){
    echo $fehler;
    }[code lang=xml] ?>

    
    > `		<form action="<?php [code lang=php]echo $_SERVER['PHP_SELF'];`{:.language-html} ?>" method="post">[/code][/code]  
      
      
    Es macht keinen Sinn, vor dem Formular alle Fehlermeldungen auszugeben und den Nutzer sich dann selbst raussuchen zu lassen, in welchem Eingabefeld er den Fehler berichtigen muss.  
      
    Fehlermeldungen sollten direkt beim betreffenden Eingabefeld stehen.  
      
      
    3\.  
      
    
    > ~~~php
      
    
    > 	empty($nachname) ? $err[] = "<p>- Bitte den Nachnamen angeben.</p>" : false;
    
    

    Schau dir nochmal an, wie der Trinitäts-Operator funktionniert.

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)