HTML-Code:
<?php // Angaben anpassen $to_email='test@example.com'; // Die Zieladresse $mail_success='./versendet.html'; // Pfad zu einer Bestätigungsseite, wenn die Mail erfolgreich versendet wurde. $error = false; // Formular-Variablen Deklarierung und Initialisierung $plz_error = ""; $vorname_error = ""; $name_error = ""; $telefon_error = ""; $telefax_error = ""; $strasse_error = ""; $ort_error = ""; $email_error = ""; $betreff_error = ""; $nachricht_error = ""; // Hier werden alle Pflichtfelder festgelegt. Diese Felder dürfen nicht leer bleiben. $pflicht = ['name', 'telefon', 'nachricht']; $absendezeit = date('h-i-s, j-m-y'); if ($_POST) { // prüfen, ob eines der Pflichtfelder leer ist foreach ($pflicht as $key => $result) { if (empty($_POST[$result])) { ${$pflicht[$key] . '_error'} = 'Bitte ausfüllen'; $error = true; } } // Prüfung der PLZ $pattern_plz = "/^[0-9]{5}$/"; if (!preg_match($pattern_plz, $_POST['plz']) && $_POST['plz'] != '') { $plz_error = 'falsches Plz Format'; $error = true; } // Prüfung der Telefonnummer $pattern_tel = "/^[0-9-()\/+.]*$/"; if (!preg_match($pattern_tel, $_POST['telefon']) && $_POST['telefon'] != '') { $telefon_error = 'falsches Format'; $error = true; } // Prüfung der Faxnummer $pattern_fax = "/^[0-9-()\/+.]*$/"; if (!preg_match($pattern_fax, $_POST['telefax']) && $_POST['telefax'] != '') { $telefax_error = 'falsches Format'; $error = true; } // Prüfung reCaptcha $captcha = isset($_POST["g-recaptcha-response"]) ? $_POST['g-recaptcha-response'] : ''; $secret = "MeinGeheimerSchluessel"; $verify = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=" . $secret . "&response=" . $captcha), true); if (!$verify['success']) { $error = true; $captcha_error = 'Captcha-Verifizierung fehlgeschlagen. Bitte erneut versuchen.'; } // Wenn keine Fehler vorhanden, dann kann die Mail versendet werden if (!$error) { $from_name = "{$_POST['vorname']} {$_POST['name']}"; $from_email = !empty($_POST['email']) ? $_POST['email'] : $to_email; $headers = "X-Sender: $from_name<$from_email>\n"; $headers .= "X-Mailer: $from_name powered by BWAT\n"; $headers .= "Return-Path: <$from_email>\n"; $headers .= "Date: " . date('r') . "\n"; $headers .= "From: $from_email \n"; $headers .= "Sender: $from_email\n"; $headers .= "Reply-To: $from_email\n"; $headers .= "Organization: BWAT\n"; $headers .= "X-MSMail-Priority: Normal\n"; $headers .= "Content-Type: text/plain\n"; $comment = $from_name . ' aus ' . $_POST['plz'] . ' ' . $_POST['ort'] . ' hat folgende Anfrage gesendet:' . "\n\n"; $comment .= "Absendezeit: " . $absendezeit . "\n\n"; $comment .= "Anrede: " . $_POST['anrede'] . "\n"; $comment .= "Vorname: " . $_POST['vorname'] . "\n"; $comment .= "Name: " . $_POST['name'] . "\n"; $comment .= "Straße: " . $_POST['straße'] . "\n"; $comment .= "Plz: " . $_POST['plz'] . " Ort: " . $_POST['ort'] . "\n"; $comment .= "Telefon: " . $_POST['telefon'] . "\n"; $comment .= "Telefax: " . $_POST['telefax'] . "\n"; $comment .= "E-Mail: " . $_POST['email'] . "\n"; $comment .= "Betreff: " . $_POST['betreff'] . "\n\n"; $comment .= "Nachricht:\n" . $_POST['nachricht']; $comment2 = "Herzlichen Dank für Ihr Interesse an BWAT.\n\nDie nachfolgende Nachricht wurde erfolgreich an uns zugestellt.\n\nIhre Nachricht:\n"; $comment2 .= $_POST['nachricht'] . "\n\n"; $comment2 .= "Wir werden uns schnellstmöglich mit Ihnen in Verbindung setzen.\nIhr BWAT\n\n"; $comment2 .= "==========================================================\n\n"; $comment2 .= "BWAT\n\n"; $comment2 .= "Musterstr. 1\n"; $comment2 .= "00815 Musterhausen\n\n"; $comment2 .= "Telefon: 0151515\n"; $comment2 .= "Telefax: 545646\n"; $comment2 .= "E-Mail: test@example.com\n"; $comment2 .= "Internet: www.example.com"; $check_send = mail($to_email, $_POST['betreff'], $comment, $headers); if ($check_send == true && $from_email != '') { if ($from_email != '' && $from_email != $to_email) @mail($from_email, $_POST['betreff'], $comment2, $headers); header("LOCATION: $mail_success"); exit(); } else { echo "Fehler beim Senden der E-Mail."; } } } ?>
- Captcha-Überprüfung:
- Ich habe die Überprüfung von $response durch die Überprüfung von $verify['success'] ersetzt. Dies ist die Standardmethode, um zu überprüfen, ob die reCaptcha-Überprüfung erfolgreich war.
- Fehlermeldungen:
- Wenn reCaptcha fehlschlägt, wird eine spezielle Fehlermeldung in $captcha_error gesetzt. Du kannst diese Fehlermeldung dann in deinem Formular anzeigen.
- Redundante Code-Blöcke entfernt:
- Der leere else {}-Block am Ende des Codes wurde entfernt, da er keine Funktion erfüllt hat.
- Fehlerbehebung:
- Falls das Formular dennoch nicht funktioniert, überprüfe die PHP-Fehlerprotokolle auf dem Server. Eventuell gibt es Probleme, die durch die Mail-Einstellungen verursacht werden könnten (z. B. Konfiguration von sendmail oder SMTP-Server).
Einen Kommentar schreiben: