Es ist ja kein Geheimnis wie man das machen kann, das die Formularfelder ausgelesen werden.
Ich hab das so gemacht:
Code: Alles auswählen
/ --- Felder auslesen ---
$fields = [];
foreach ($_POST as $k => $v) {
if ($k === ($config['honeypot_field'] ?? '_hp') || $k === 'captcha') continue;
$fields[$k] = is_array($v) ? implode(', ', $v) : trim($v);
}
if (empty($fields)) {
respondJSON(false, 'Keine Formulardaten empfangen.');
}
Ablauf:
$fields = []; -- erst wird ein leeres Array $fields erstellt.
Hier landen später alle Formulareingaben (z. B. Name, E-Mail, Nachricht …).
foreach ($_POST as $k => $v) { -- damit wird jede einzelne POST-Variable durchlaufen, die vom Formular gesendet wurde.
$k ist der Feldname (z. B. name, email, nachricht)
$v ist der Feldwert (z. B. „Max Mustermann“, „
test@mail.de
“, „Hallo!“)
if ($k === ($config['honeypot_field'] ?? '_hp') || $k === 'captcha') continue; -- Filtert Felder aus, die nicht im Mailtext auftauchen sollen:
Das unsichtbare Honeypot-Feld (_hp), das nur für Spambots da ist
Das Captcha-Feld, das für die Prüfung gebraucht wird, aber nicht in der Mail stehen soll
→ continue überspringt diese Felder.
$fields[$k] = is_array($v) ? implode(', ', $v) : trim($v); -- Hier werden die eigentlichen Werte gespeichert:
Wenn das Feld ein Array ist (z. B. bei Checkbox-Gruppen oder Mehrfachauswahl),
werden alle Werte mit Kommas zusammengefasst:
["Grillen", "Aufbau"] → "Grillen, Aufbau"
Wenn es ein normaler String ist, wird trim() angewendet, um Leerzeichen am Anfang und Ende zu entfernen.
So hab ich das umgesetzt
Das nervige Datenschutz gdpr kann man auch ausklammern :
if (
$k === ($config['honeypot_field'] ?? '_hp') ||
$k === 'captcha' ||
$k === 'gdpr'
) continue;