Problem mit Kontaktformular

araser

Grünschnabel
Hallo zusammen,

ich bin ein PHP Anfänger und habe noch Probleme mit dem Verständnis und dem Syntax. Ich habe aus einem Tutorial ein Kontaktformular erstellt und lasse es auf der nächsten Seite durch dieses Skript prüfen und versenden.

Leider ist es mir nicht gelungen einen E-Mailcheck oder einzeln ausgegebene Fehler einzubauen ohne zig Parser Fehler zu erzeugen.

Könnte mir jemand helfen die E-Mailüberprüfung einzubauen und mir beispielhaft zeigen, wie man die Fehler einzeln ausgibt? Ich werde die Fehler dann analog selbst zu Ende bringen.

Vielen Dank für eure Mühe.
Gruß araser

PHP:
<?php

$Empfaenger = "info@seite.de";

if($_REQUEST['Send'])
{
   if (empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']) || empty($_REQUEST['Telefon']) || empty($_REQUEST['Rueckruf']) || empty($_REQUEST['Anrede']))
   {
      echo"<p class=\"r\">Sie haben leider noch nicht alle Felder ausgefüllt. Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen das Formular vollständig aus!</p>";
   }
   else
   {
      $Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
      while(list($Formularfeld, $Wert)=each($_REQUEST))
      {
         if($Formularfeld!="Send")
         {
            $Mailnachricht .= $Formularfeld.": ".$Wert."\n";
         }
      }
      $Mailnachricht .= "\nDatum/Zeit: ";
      $Mailnachricht .= date("d.m.Y H:i:s");
      $Mailbetreff = "Seite.de | Kontakt: ";
      $Mailbetreff .= $_REQUEST['Betreff'];
      mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
      echo"<p class=\"g\">Ihre Nachricht wurde erfolgreich an ... verschickt und wird in Kürze bearbeitet.</p>";
   }
}
else
{
   echo"Leider ist ein Fehler aufgetreten. Bitte gehen Sie auf diese <a href=\"kontakt.php\">Seite</a>.";
}

?>
 
Das kann man bspw. so bewerkstelligen:
PHP:
  function is_email($Addr) 
  {
   // Beispielfunktion um eine Email-Adresse auf ihre Syntax zu prüfen
   // gefunden auf www.php.net
   $p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
   $p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
   $p.= '|info|arpa|aero|coop|name|museum)$/ix';
   return preg_match($p, $Addr);
  }

if (empty($_POST['Name'])
{
      echo "<p>Kein Name eingegeben.</p>";
} 

if(empty($_POST['Email']))
{
      echo "<p>Keine Email-Adresse eingegeben.</p>";
}
elseif(is_email($_POST['Email']) == FALSE)
{
      echo "<p>Sie haben keine gültige Email-Adresse eingegeben.</p>"
}

// ...
Benutze das globale Array $_POST, weil die Daten aus dem Formular mit Sicherheit immer über die Methode POST gesendet werden.
 
Zuletzt bearbeitet:
Ich habe jetzt versucht die Funktion einzubauen allerdings gibt es wieder Parserfehler:
"Parse error: syntax error, unexpected T_ELSE in /www/htdocs/w0061585/cms/templates/.../kontakt-auswerten.php on line 73"

Ich habe das erste if in dem Skript gelassen. Kann es sein, dass es Probleme bereitet falls nur die E-Mailadresse falsch eingegeben wurde?

Danke für das schnelle Feedback und Grüße
araser



PHP:
<?php

$Empfaenger = "info@seite.de";

if($_POST['Send'])
{
		if (empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']) || empty($_REQUEST['Telefon']) || empty($_REQUEST['Rueckruf']) || empty($_REQUEST['Anrede'])) 
		{
	   		echo "<p class=\"r\"><strongFehler</strong></p><br /><br />";
			
			if (empty($_POST['Anrede'])) { echo "<p>Keine Anrede gewählt</p>"; }
			
			if (empty($_POST['Name'])) { echo "<p>Kein Name eingegeben.</p>"; } 
			
			function is_email($Email) 
			{
			// Beispielfunktion um eine Email-Adresse auf ihre Syntax zu prüfen
			// gefunden auf www.php.net
			$p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
			$p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
			$p.= '|info|arpa|aero|coop|name|museum)$/ix';
			return preg_match($p, $Email);
			}
			
			if(empty($_POST['Email'])) { echo "<p>Keine Email-Adresse eingegeben.</p>"; }
			elseif(is_email($_POST['Email']) == FALSE) { echo "<p>Sie haben keine gültige Email-Adresse eingegeben.</p>"; }
			
			if (empty($_POST['Nachricht'])) { echo "Nachricht eingeben"; }
		
			if (empty($_POST['Rueckruf'])) { echo "Rückruf wählen"; }
			
			if (empty($_POST['Telefon'])) { echo "Telefonnummer eingeben"; }
		
		}
   	else
   	{
      	$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
		while(list($Formularfeld, $Wert)=each($_POST))
		{
			if($Formularfeld!="Send")
			{
				$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
			}
		}
	    $Mailnachricht .= "\nDatum/Zeit: ";
		$Mailnachricht .= date("d.m.Y H:i:s");
		$Mailbetreff = "Seite.de | Kontakt: ";
		$Mailbetreff .= $_POST['Betreff'];
		mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_POST['Email']); {
		echo"<p class=\"g\">Ihre Nachricht wurde erfolgreich an ... verschickt und wird in Kürze bearbeitet.</p>";
	}
	else   // <= Zeile 73
	{
   		echo"Leider ist ein Fehler aufgetreten. Bitte gehen Sie auf diese <a href=\"kontakt.php\">Seite</a>.";
	}
?>
 
Hi

PHP:
mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_POST['Email']); {
        echo"<p class=\"g\">Ihre Nachricht wurde erfolgreich an ... verschickt und wird in Kürze bearbeitet.</p>"

Da hast du eine Fehler. Du hast die geschweifte Klammer falsch gesetzt.

Mfg Akkie
 
Der Fehler lag in Zeile 70. Dort befand sich aus unerklärlichen Gründen am Ende der Zeile, hinter dem ; ein {.
Habe das Script noch ein wenig umgebaut. Ist nicht getestet, müsste aber gehen.
Die Fehlermeldungen werden zunächst in einem Array $error[] gespeichert und dann gemeinsam ausgegeben.
PHP:
<?php
/* 
 * 
 * Created on 24.09.2006 14:25:41
 *
 */
$Empfaenger = "info@seite.de";

if($_POST['Send'])
{
           	if (empty($_POST['Anrede'])) 
           	{ 
           		$error[] = "<p>Keine Anrede gewählt</p>"; 
           	}
            
            if (empty($_POST['Name'])) 
            { 
            	$error[] = "<p>Kein Name eingegeben.</p>"; 
            } 
            
            function is_email($Email) 
            {
            // Beispielfunktion um eine Email-Adresse auf ihre Syntax zu prüfen
            // gefunden auf www.php.net
            $p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
            $p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
            $p.= '|info|arpa|aero|coop|name|museum)$/ix';
            return preg_match($p, $Email);
            }
            
            if(empty($_POST['Email'])) 
            { 
            	$error[] = "<p>Keine Email-Adresse eingegeben.</p>"; 
            }
            elseif(is_email($_POST['Email']) == FALSE) 
            { 
            	$error[] = "<p>Sie haben keine gültige Email-Adresse eingegeben.</p>"; 
            }
            
            if (empty($_POST['Nachricht'])) 
            {
				$error[] = "Nachricht eingeben"; 
			}
        
            if (empty($_POST['Rueckruf'])) 
            { 
				$error[] = "Rückruf wählen"; 
			}
            
            if (empty($_POST['Telefon'])) 
            { 
            	$error[] = "Telefonnummer eingeben"; 
            }
        
			
			if(isset($error))
			{
				echo "<p class=\"r\"><strong>Fehler</strong></p>"; 
				echo "<ul>";
				for($i=0;$i <= count($error);$i++)
				{
					echo "<li>".$error[$i]."</li>";
				}
				echo "</ul>";
			}
			else
			{
          		$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
		        while(list($Formularfeld, $Wert)=each($_POST))
		        {
		            if($Formularfeld!="Send")
		            {
		                $Mailnachricht .= $Formularfeld.": ".$Wert."\n";
		            }
		        }
		        $Mailnachricht .= "\nDatum/Zeit: ";
		        $Mailnachricht .= date("d.m.Y H:i:s");
		        $Mailbetreff = "Seite.de | Kontakt: ";
		        $Mailbetreff .= $_POST['Betreff'];
		        mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_POST['Email']);
		        echo"<p class=\"g\">Ihre Nachricht wurde erfolgreich an ... verschickt und wird in Kürze bearbeitet.</p>";
			}
}
    else   // <= Zeile 73
    {
           echo"Leider ist ein Fehler aufgetreten. Bitte gehen Sie auf diese <a href=\"kontakt.php\">Seite</a>.";
    }
?>
 
Als ich die geschweifte Klammer entfernt habe, war das ELSE trotzdem ein unexpected Parserfehler. Ich habe Suyes Skript eingefügt und es hat super funktioniert, bis auf die unordered List, sie hat am Ende eine Aufzählung zuviel generiert. Dafür habe ich einfache Paragraphen eingefügt und es funktioniert genauso so wie ich es gewollt habe. Vielen Dank für die schnellen Antworten und besonders suye für das verbesserte Skript.:)
 
Zurück