item: Eine Funktion sollte nie innerhalb eines IF stehen. Die kannst du gut und geren ans Ende von dem Script verschieben. Ich spreche da von is_email()
item: Eine Funktion schreiben ist schön. Doch diese führt sich nicht von selber auf nur weil sie da steht. Mach dich bitte mal über das Thema Funktionen schlau.
So, hab mal ein wenig formatiert für dich.
Dabie habe ich mal all das Mailformatierzeugs rausgeschmissen und mich auf das wesentliche konzentriert. Dabei fällt auf, dass du am Ende 2 Else hintereinander hast
PHP:
<?php
$Empfaenger = "info@gtm-dienstleistungen.de";
if($_POST['Send']){
if(empty($_POST['Name']) ||
empty($_POST['Email']) ||
empty($_POST['Telefon'])||
empty($_POST['Code']) ||
empty($_POST['Werkstatt']) ||
empty($_POST['Kontakt'])
){
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
}
}else{
//TODO: Mailheader zusammensetzn
echo"<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
}else{
//TODO: Mail ausgeben
}
function is_email($email){
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
list($email,$domain) = explode('@',$email);
if(!getmxrr ($domain,$mxhosts)){
return false;
}else{
return true;
}
}else{
return false;
}
}
?>
Dein jetztiger Programmablauf ist:
1) Prüfen ob Daten gesendet werden. Wenn ja, prüfst du auf Vollständigkeit (nicht auf Validierung des Empfängers!).
2) Falls nichts gesendet wurde, erstellst du einen Mailheader.
3) In einem Weiteren else (das es nicht geben darf) erstellst du auch noch der Rest des Mails.
Ergo:
- Also, du sendest nur ein Mail wenn KEIN Formular gesendet wurde.
- Du prüfst NIE die Emailadresse
- Du hast ein else zuviel
Mein Vorschlag ist diese Struktur
PHP:
<?php
$Empfaenger = "info@gtm-dienstleistungen.de";
//Prüfen ob gesendet
if($_POST['Send']){
//Auf Vollständigkeit prüfen
if(empty($_POST['Name']) ||
empty($_POST['Email']) ||
empty($_POST['Telefon'])||
empty($_POST['Code']) ||
empty($_POST['Werkstatt']) ||
empty($_POST['Kontakt'])
){
//Email Validieren
if(!isValidEmail($_POST['Email'])){
//Mail ausgeben
//TODO: Mailheader zusammensetzn
//TODO: Mail ausgeben
echo "<p>Vielen Dank für Ihre eMail!<br> In der Regel beantworten wir ihre Anfrage innerhalb der nächsten 24 Stunden. <br>Ihr GTM Team</p>";
}else{
//Fehlermeldung Emailvalidierung
echo "Emailadresse ist ungültig";
}
}else{
//Fehlermeldung unvollständiges Formular
echo "Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle markierten Felder aus!";
}
}
/**
* isValidEmail
* Prüft ob eine Emailadresse gültig ist mittels filter_var() und getmxrr()
* @param String $email
* @return boolean
*/
function isValidEmail($email){
//PHP-Filter anwenden
$email = filter_var($email, FILTER_VALIDATE_EMAIL);
if($email === false) return false;
//Und noch die Domain testen
list($name,$domain) = explode('@',$email);
return (getmxrr ($domain,$mxhosts));
}
?>