Formmailer

nordi

Erfahrenes Mitglied
Hi Leute, ich hab ein Problem mit meinem Formmailer! Ich weiß einfach nicht, warum er mit ne Fehlermeldung ausgibt!? Wäre super nett, wenn ihr mal über den Code rübergucken könntet! Er gibt mir eben immer die Fehlermeldung aus, wenn was nicht eingegeben wurde. "Ihr Emaiverkehr funktioniert nicht"

PHP:
<script language=JavaScript>
<!--
 function isValid() { 

   var msg = "";
   
   if (kontaktFormular.eMail.value.indexOf("@") < 1 ||
       kontaktFormular.eMail.value.indexOf(".") < 1) {
     msg += "- Die E-Mail-Adresse ist syntaktisch nicht korrekt.\n";
   }
   
   if(kontaktFormular.vorName.value == "") {
     msg += "- Leeres Feld: Vorname:\n";
   }

   if(kontaktFormular.nachName.value == "") {
     msg += "- Leeres Feld: Nachname:\n";
   }

   if(kontaktFormular.betreff1.value == "") {
     msg += "- Leeres Feld: Betreff:\n";
   }

   if(kontaktFormular.nachricht.value == "") {
     msg += "- Leeres Feld: Nachricht:\n";
   }
   
   if(msg == "") {
     return true;   
   }
   alert(msg);
   return false;
 }
-->
</script>
<?php
  
  $formularAnzeigen = false;
  if (!empty($_POST["senden"]) && (
      empty($_POST["vorName"]) ||
      empty($_POST["nachName"]) ||
      empty($_POST["eMail"]) ||
      empty($_POST["betreff1"]) ||
      empty($_POST["nachricht"]))) {
    $formularAnzeigen = true;
    echo '<span style="color: #FF0000; font-size: x-large;">Bitte alle Pflichtfelder ausfuellen.</span>';
  } else if (!empty($_POST["senden"]) &&
             !isEmail($_POST["eMail"])) {
    $formularAnzeigen = true;  
    echo '<span style="color: #FF0000; font-size: x-large;">Die E-Mail-Adresse ist nicht korrekt.</span>';
  } else if (empty($_POST["senden"])) {
    $formularAnzeigen = true;  
  }
  if ($formularAnzeigen) {
?>
<form name="kontaktFormular" method="post" action="<?=$_SERVER[PHP_SELF]; ?>" onSubmit="return isValid()">
  <table width="100%" border="0">
<!--anfang vorName-->  
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Vorname:
      </strong></td>
      <td>
      <input name="vorName" type="text" value="<?=$_POST['vorName']; ?>" /></td>
          
    </tr>
<!--ende vorName-->
<!--anfang nachName-->    
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Nachname:
      </strong></td>
      <td><input name="nachName" type="text" value="<?=$_POST['nachName']; ?>" /></td>          
    </tr>
<!--ende nachName-->
<!--anfang eMail-->        
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        E-Mail:
      </strong></td>
      <td><input name="eMail" type="text" id="eMail" value="<?=$_POST['eMail']; ?>" /></td>      
    </tr>
<!--ende eMail-->
<!--anfang betreff1-->
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Betreff:
      </strong></td>
      <td><input name="betreff1" type="text" id="betreff1" value="<?=$_POST['betreff1']; ?>" size="50" /></td>          
    </tr>
<!--ende betreff1-->
<!--anfang nachricht-->      
    <tr>
      <td><div align="center">*</div></td>
      <td><strong>
        Nachricht:
      </strong></td>
      <td><textarea name="nachricht" cols="40" rows="10"><?=$_POST['nachricht']; ?></textarea></td>          
    </tr>
<!--ende nachricht-->    
    <tr>
      <td colspan="3">
        <div align="center">
          <input name="senden" type="submit" value="Senden" />
        </div>
      </td>          
    </tr>
  </table>
</form>

<?php
  } else {
    $eMail = '
        
Vorname:
'.$_POST['vorName'].'
        
Nachname:
'.$_POST['nachName'].'
        
E-Mail:
'.$_POST['eMail'].'
        
Betreff:
'.$_POST['betreff1'].'
        
Nachricht:
'.$_POST['nachricht'].'';
    
    if (@mail("info@blablabla.de",
         "Neue Nachricht vom Kontaktformular",
         $eMail)) {
      echo "Ihre Nachricht wurde an verschickt, vielen Dank!<br />"; 
    } else {
      echo "E-Mail-Verkehr funktioniert zur Zeit nicht<br />";
    }
    if ($_POST['kopie']) {
      if (@mail($_POST['eMail'],
           "FLAIRFORCE: Hier die Kopie Ihrer Nachricht",
           $eMail)) {
        echo "Sie haben eine Kopie der Nachricht zugeschickt bekommen.<br />";
      }
    }
  }
  
  function isEmail($email) {
    $nonascii      = "\x80-\xff"; 
    $nqtext        = "[^\\$nonascii\015\012\"]";
    $qchar         = "\\[^$nonascii]";
    $protocol      = "(?:mailto:)";
    $normuser      = "[a-zA-Z0-9][a-zA-Z0-9_.-]*";
    $quotedstring  = "\"(?:$nqtext|$qchar)+\"";
    $user_part     = "(?:$normuser|$quotedstring)";
    $dom_mainpart  = "[a-zA-Z0-9][a-zA-Z0-9._-]*\.";
    $dom_subpart   = "(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*";
    $dom_tldpart   = "[a-zA-Z]{2,5}";
    $domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";
    $regex         = "$protocol?$user_part\@$domain_part";
    if (preg_match("/^$regex$/",$email)) {
      return true;
    }
    return false;
  }
?>
 

Flex

(aka Felix Jacobi)
Entferne mal das "@" vor den Funktionen, da dieses hilfreiche Fehlermeldungen unterdrücken kann.
 

Acriss

Gesperrt
ich glaube das liegt daran
das du darin folgendes geschrieben hast:
else:
Ihr emailverkehr funktioniert net
else beudeutet, sobald irgendetwas aus der if anweisung nicht stimmt, wird dahin gesprungen
probiere es mal mit elseif
da kannst du dann fehlermeldungen expliziet ausgeben
also wenn der absender fehlt halt "error, kein absender"
 

nordi

Erfahrenes Mitglied
@Acriss: Wenn ich "elseif" anstatt von "else" wird mir folgende Fehlermeldung ausgegeben:

Parse error: syntax error, unexpected '{', expecting '(' in /is/htdocs/wp1075550_V1XM7I2ES8/www/kontakt.php on line 203

In Zeile 204 steht eben nur der Befehl elseif. Kannst du damit was anfangen? Ich irgendwie nicht..

@FelixJacobi: Habt die @'s entfernt - werden aber keine Fehlermeldungen ausgegeben.. Wieder die Meldung "Der Emailverkehr funktioniert gerade nicht"
 

Flex

(aka Felix Jacobi)
[phpf]elseif[/phpf] erwartet auch eine neue Bedingung, ungefähr so:

PHP:
if($a = '0') {
 # do sth
} elseif($a = '1') {
 # do sth else
} else {
 # die
}
Allerdings ist hier else richtig.

Setze bitte einmal [phpf]error_reporting[/phpf] auf E_ALL, damit alle Fehler ausgegeben werden.