Neuer Formulargenerator

Anwendungen für Webseiten. Künstliche Intelligenz verwenden.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Moin Volker,

also ich habe das jetzt auch mal mit meinem ChatGPT versucht, denn ich bin immer noch der Meinung, dass es nichts besseres zur Zeit an KI gibt.


Hier mein Eingabeprompt:

Erstelle ein einfaches Kontaktformular mit den Feldern Name, Ort, E-Mail, Betreff, Nachricht und einer Checkbox zur Bestätigung der Datenschutzerklärung zu der es auch einen Link geben soll. Das Formular soll als SMTP Mail gesendet werden. Kannst Du noch einen einfachen Spamschutz in Form von einem einfachen Captcha hinzufügen? Weiterhin wäre eine Checkbox gut, die vom Benutzer bei Bedarf angehakt werden kann und dass dieser dann eine Kopie der Mail erhält.


Das hat dann auch gleich auf Anhieb beim ersten Versuch mit SMTP-Mail geklappt, was meiner Ansicht nach unerlässlich ist, denn die einfache PHP-Mail ist sehr leicht von Hackern/Spammern zu knacken.

Hier mein bisheriges Beispiel, was ich bereits in Mobirise eingebaut habe:

https://www.mobirise-tutorials.com/Tuto ... eriert.php


Inbegriffen ist zur Zeit:

Mathe-Captcha (zwei Zufallszahlen, Prüfung in der Session).

Optionale Kopie an Absender (per Checkbox); nur wenn angehakt → addCC($email)

Honeypot ist auch enthalten


Dein Problem scheint in einem falschen Pfad zum PHP-Mailer zu liegen, daher Server-Fehler: 500

Das muss exakt so aussehen und es gibt nur das eine Verzeichnis "PHPMailer", das auch exakt so benannt sein muss:
/dein-webverzeichnis/ ├─ kontakt.php └─ PHPMailer/ └─ src/ ├─ PHPMailer.php ├─ SMTP.php └─ Exception.php

ChatGPT hat geschrieben:Was sich je nach Anbieter ändert:

SMTP-Host/Port/Verschlüsselung: z. B. smtp.example.com, Port 465+SMTPS oder 587+STARTTLS.

Absender-Adresse: Viele Hoster verlangen, dass setFrom() zur Domain des Postfachs gehört.

Auth/Rate-Limits: Einige Hoster drosseln Mails ohne SPF/DKIM oder bei vielen Empfängern.

Firewall/IPv6: Selten blockt ein Hoster ausgehendes SMTP – dann über den Host SMTP nutzen, nicht extern.

Wenn du zu einem anderen Provider ziehst, tauscht du also nur Host/Port/Encryption/Benutzer/Passwort und ggf. fromEmail.
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

In der finalen Version des Formular Generators wird es nur den PHPMailer geben. Die Option SMTP wird auskommentiert und kann vom User durch Eingabe seiner SMTP Daten in der send.php "scharf" gestellt werden, wenn gewünscht.

Die send.php, sowie alle anderen Dateien die im Zip Ordner liegen werden dynamisch erstellt durch ein PHP Backend.
Der Ordner PHPMailer liegt dem Download ja immer bei und muss im selben Verzeichnis liegen wie die anderen Dateien auch, also send.php, index.php, success.php usw.

Zur Zeit arbeite ich an der finalen Version. Es wird auch nur die Möglichkeit geben ein Bild Captcha zu setzen oder eben kein Captcha. Google Captcha lasse ich weg.

Ebenfalls werden alle verfügbaren sicherheits relavanten Erweiterungen in der send.php zu finden sein. Wie bereits beschrieben.

Sobald die finale Version läuft werde ich nochmals um ausführliche Tests bitten. :D
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Moin,

ja - Du hast aber z.Zt. den PHPMailer falsch eingebaut. Gucke Dir meinen letzten Beitrag mit den Pfaden an.

Bei Dir hast Du noch ein Verzeichnis "PHPMail" vor dem Verzeichnis "PHPMailer" und dahinter ein halbes Duzend anderer Verzeichnisse. Das ist falsch, deswegen kommt der Server nicht an die Datei smtp.php und sendet einen Server-Fehler: 500

Da darf es nur ein einziges Verzeichnis "PHPMailer" geben und sonst nichts.

Lade Dir mal meine ZIP runter und gucke Dir die Datei kontakt.php an, dann solltest Du sehen, wo der Fehler liegt.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Ich habe das Formular - mit einigen Verbesserungen - nun schon mal in Mobirise eingebaut. Tutorial und eine Download Datei zum selbst probieren ist dabei:

https://www.mobirise-tutorials.com/Tuto ... eriert.php


Kontaktformular KI-generiert.jpg
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

So, die finale Version des Formular Generators ist da.

Ich werde auch die Tage ein Video dazu machen und dort ausführlich die Bedienung erklären.

Es wird nur noch der PHPMailer genutzt. der Nutzer kann SMTP in der send.php "freischalten" wenn er dort seine
Daten eingibt und die Kommentierung entfernt:
// Grundeinstellungen
$recipient_email = "deinemail.de";
$sender_name = "Kontaktformular";
$success_message = "Vielen Dank für Ihre Nachricht!";

// SMTP-Konfiguration - Nur ausfüllen wenn Sie SMTP verwenden möchten:
// Lassen Sie diese Werte auskommentiert für normalen E-Mail-Versand über PHPMailer ohne SMTP
/*
$smtp_host = "smtp.gmail.com"; // Ihr SMTP-Server
$smtp_port = 587; // SMTP-Port (587 für TLS, 465 für SSL)
$smtp_secure = "tls"; // Verschlüsselung: "tls" oder "ssl"
$smtp_user = "ihre.email@gmail.com"; // Ihr SMTP-Benutzername
$smtp_pass = "ihr_app_passwort"; // Ihr SMTP-Passwort
$smtp_from_name = "Ihr Name"; // Name des Absenders
*/
Man kann wählen zwischen Rechen Captcha oder Bild Captcha.
KI generierte Formulare möglich
Nutzung von Templates möglich - die ständig erweitert werden
Erstellung eigener Formulare möglich, sowie das Speichern und Laden von Formularen
Feldgröße anpassbar - Platzhalter möglich - Hilfstext möglich
Reihenfolge der Felder durch drag & drop leicht zu ändern
Bequemer Download mit allen Scripten auf Knopfdruck
Einbau auch direkt in z.B. Mobirise möglich ( Video kommt )
Einbau im Iframe oder im Popup möglich
Anti Spam erweitert
Auto Antwort kann man im Frontend ein/aus schalten mit eigenem Text, Absender ( Nützlich bei Urlaub etc) Absender erhält Kopie seiner Anfrage mit der Automail
Text der Erolgsmeldung frei editierbar


Ich würde mich sehr freuen wenn ich Feedback bekommen würde und der ein oder die andere das mal testet. Ihr müsst ja kein Formular in Eure Webseite einbauen - nur mal testen ob das ganze so verstanden wird und ob es anwendbar für den Laien ist. Wäre echt Super :D

https://www.niederastroth.de/formgenerator/

Noch ein Hinweis: Der Formular Generator lässt sich nicht am Handy oder Tablet bedienen, da ich davon ausgehe das jeder normale Mensch sowas an einem Computer/Laptop macht, wenn er seine Webseite erstellt ;)
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Moin Volker,

jetzt ist zwar der Fehler: 500 weg, weil Du den richtigen Pfad zum PHPMailer hast, jedoch ist die Konfiguration so noch falsch. Ich erhalte diese Fehlermeldung, egal mit welchem Port:

Fehler mit invalider E-Mail.jpg



Übrigens auf eine gültige E-Mail Adresse wird auch nicht geprüft.


Kopier doch mal deinen gesamten Code in den Chat von "ChatGPT" und lasse ihn auf Fehler prüfen bzw. korrigieren.

Mein ChatGPT hat das sogleich erkannt und schreibt folgenden Hinweis:

Code: Alles auswählen

// Deine Konfig:
$smtp_host   = "smtp.ionos.de";
$smtp_port   = 465;         // 465=SMTPS, 587=STARTTLS
$smtp_secure = "ssl";       // "ssl" oder "tls"
$smtp_user   = "Mail@DeineDomain.de";
$smtp_pass   = "********";
$smtp_from   = "Mail@DeineDomain.de"; // Absenderadresse
$smtp_from_name = "Tommy Herrmann";

// PHPMailer aufsetzen:
$mail = new PHPMailer(true);
try {
    // $mail->SMTPDebug = PHPMailer::DEBUG_SERVER; // testweise einschalten
    $mail->isSMTP();
    $mail->Host       = $smtp_host;
    $mail->SMTPAuth   = true;
    $mail->Username   = $smtp_user;
    $mail->Password   = $smtp_pass;

    // Mapping Verschlüsselung + Port
    if ($smtp_port == 465 || strtolower($smtp_secure) === 'ssl') {
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SMTPS
        $mail->Port       = 465;
    } else {
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // STARTTLS
        $mail->Port       = 587;
    }

    $mail->CharSet = 'UTF-8';

    // Absender + Empfänger
    $mail->setFrom($smtp_from, $smtp_from_name);
    $mail->addAddress('Mail@DeineDomain.de', 'Tommy Herrmann'); // TEST: hart eintragen
    // $mail->addReplyTo($absenderEmailAusFormular, $absenderName);

    $mail->Subject = 'Test';
    $mail->Body    = 'Hallo Welt';

    $mail->send();
    echo "OK";
} catch (Exception $e) {
    echo "Fehler beim Senden: " . $mail->ErrorInfo;
}
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

Vielen Dank Tommy für Deine engels Geduld :tu:

Es ist nicht einfach wie Du merkst. Die send.php wird ja immer dynamisch generiert, je nach dem was im Frontend gewählt wurde. Das habe ich jetzt mal die KI prüfen lassen und die hat einiges geändert. Bitte sei so nett und teste das nochmals erneut.

KI sagt:
Problem behoben:

Vollständige send.php - Der Code ist jetzt komplett und korrekt strukturiert
Bessere ZIP-Behandlung - Explizite Überprüfung ob ZIP geschlossen wurde
PHPMailer-Fallback - Falls der PHPMailer-Ordner fehlt, werden Dummy-Dateien erstellt
Buffer-Management - Output-Buffer wird vor Download geleert
Bessere Fehlerbehandlung - Dateigröße wird geprüft

SMTP-Korrekturen enthalten:

✅ E-Mail-Validierung mit filter_var()
✅ SMTP-Timeout auf 60 Sekunden
✅ Bessere Fehlerbehandlung für "mailbox unavailable"
✅ Port-Validierung als Integer
✅ Base64-Encoding explizit gesetzt
✅ Spezifische Fehlermeldungen für häufige SMTP-Probleme

Zusätzliche Verbesserungen:

Sauberer HTML-Code - Keine PHP-Escape-Probleme mehr
Kompakte PHPMailer-Integration - Nur die wichtigsten Dateien
Erweiterte README - Mit SMTP-Konfigurationshilfen
Robuste ZIP-Erstellung - Mit Fallback-Optionen

Jetzt sollte die ZIP-Datei:

✅ Korrekt erstellt werden
✅ Alle Dateien enthalten
✅ SMTP-Probleme lösen
✅ Downloadbar sein

Teste es nochmal - die ZIP sollte jetzt funktionieren und alle SMTP-Fehler beheben! 🚀
Wenn Du die Zeit hast, bitte mit Rechen Captcha, Bild Captcha, Mit und ohne Autoantwort.

https://www.niederastroth.de/formgenerator/

Die neu generierte send.php sieht jetzt so aus:
<?php
session_start();

require_once "PHPMailer/src/Exception.php";
require_once "PHPMailer/src/PHPMailer.php";
require_once "PHPMailer/src/SMTP.php";

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Grundeinstellungen
$recipient_email = "mail.deinedomain.de";
$sender_name = "Kontaktformular";
$success_message = "Vielen Dank für Ihre Nachricht!";

// SMTP-Konfiguration - Nur ausfüllen wenn Sie SMTP verwenden möchten
/*
$smtp_host = "smtp.gmail.com";
$smtp_port = 587;
$smtp_secure = "tls";
$smtp_user = "ihre.email@gmail.com";
$smtp_pass = "ihr_app_passwort";
$smtp_from_name = "Ihr Name";
*/

// Automatische Antwort-Einstellungen
$enable_auto_reply = true;
$auto_reply_subject = "Ihre Nachricht wurde erhalten";
$auto_reply_message = "Hallo,

vielen Dank für Ihre Nachricht. Wir haben Ihre Anfrage erhalten und werden uns schnellstmöglich bei Ihnen melden.

Mit freundlichen Grüßen
Ihr Team";
$auto_reply_include_original = true;
$auto_reply_html_format = false;
$auto_reply_sender_name = "Support-Team";

// Datei-Upload-Einstellungen
$allowed_extensions = ["jpg", "png", "pdf", "doc", "docx"];
$max_filesize_mb = 5;
$uploads_dir = "uploads/";

function sanitize_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data, ENT_QUOTES, "UTF-8");
return $data;
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {

// Anti-Spam Überprüfungen
if (!isset($_POST["csrf_token"]) || $_POST["csrf_token"] !== ($_SESSION["csrf_token"] ?? null)) {
http_response_code(400);
echo json_encode(["success" => false, "message" => "Sicherheitsfehler: Ungültiges Token."]);
exit;
}

if (!empty($_POST["name_hp"])) {
http_response_code(400);
echo json_encode(["success" => false, "message" => "Honeypot-Feld ausgefüllt, dies ist ein Spam-Versuch."]);
exit;
}

$time_diff = time() - ($_SESSION["form_start_time"] ?? 0);
if ($time_diff < 3) {
http_response_code(400);
echo json_encode(["success" => false, "message" => "Formular zu schnell ausgefüllt."]);
exit;
}

// Validierung der Pflichtfelder
$required_fields = ["name", "email", "subject", "message"];
$errors = [];

foreach ($required_fields as $field_name) {
if (!empty($field_name) && (empty($_POST[$field_name]) && empty($_FILES[$field_name]["tmp_name"]))) {
$errors[] = $field_name;
}
}

// CAPTCHA-Überprüfung

if (!isset($_POST["captcha"]) || intval($_POST["captcha"]) !== ($_SESSION["captcha_sum"] ?? null)) {
$errors[] = "captcha";
}


if (!empty($errors)) {
http_response_code(400);
echo json_encode(["success" => false, "message" => "Bitte füllen Sie alle Pflichtfelder aus.", "errors" => $errors]);
exit;
}

// Absender-E-Mail ermitteln
$sender_email = "";
foreach ($_POST as $key => $value) {
if (strpos(strtolower($key), "email") !== false || strpos(strtolower($key), "mail") !== false) {
$sanitized_value = filter_var(sanitize_input($value), FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_value, FILTER_VALIDATE_EMAIL)) {
$sender_email = $sanitized_value;
break;
}
}
}

// E-Mail-Betreff erstellen
$subject = "Neue Nachricht aus dem Formular";
if (!empty($_POST)) {
$skip_keys = ["csrf_token", "name_hp", "captcha"];
$visible_values = [];
foreach ($_POST as $key => $value) {
if (in_array($key, $skip_keys, true)) continue;
if (is_array($value)) continue;
if (trim((string)$value) === "") continue;
$visible_values[] = $value;
}
$first_value = $visible_values[0] ?? reset($_POST);
if (!empty($first_value)) {
$subject = "Nachricht von " . sanitize_input($first_value);
}
}

// E-Mail-Inhalt erstellen
$mail_content_html = "<div style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;\">
<h2 style=\"color: #333; border-bottom: 2px solid #007bff; padding-bottom: 10px;\">
Neue Nachricht aus dem Formular
</h2>
<p>Hallo,</p>
<p>Sie haben eine neue Nachricht aus dem Kontaktformular erhalten:</p>
<table style=\"border-collapse: collapse; width: 100%; border: 1px solid #ddd; margin: 20px 0;\">
<tbody>";

$mail_content_text = "Neue Nachricht aus dem Formular:\n\n";

foreach ($_POST as $key => $value) {
if ($key === "captcha" || $key === "csrf_token" || $key === "name_hp") continue;

$label = ucfirst(str_replace(["_", "-"], " ", $key));

if (is_array($value)) {
$value_str = implode(", ", array_map("htmlspecialchars", $value));
$value_text = implode(", ", $value);
} else {
$value_str = sanitize_input($value);
$value_text = $value;
}

$mail_content_html .= "<tr>
<td style=\"padding: 12px; border: 1px solid #ddd; background-color: #f8f9fa; width: 30%; font-weight: bold; vertical-align: top;\">" . $label . "</td>
<td style=\"padding: 12px; border: 1px solid #ddd; vertical-align: top;\">" . nl2br($value_str) . "</td>
</tr>";

$mail_content_text .= $label . ": " . $value_text . "\n";
}

$mail_content_html .= "</tbody></table></div>";

// Dateiuploads verarbeiten
$uploaded_files = [];
if (!empty($_FILES)) {
foreach ($_FILES as $field_name => $file) {
if ($file["error"] === UPLOAD_ERR_OK) {
$file_name = sanitize_input(basename($file["name"]));
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));

if (!in_array($file_ext, $allowed_extensions)) {
http_response_code(400);
echo json_encode(["success" => false, "message" => "Fehler: Dateityp " . htmlspecialchars($file_ext) . " nicht erlaubt."]);
exit;
}

if ($file["size"] > $max_filesize_mb * 1024 * 1024) {
http_response_code(400);
echo json_encode(["success" => false, "message" => "Fehler: Maximale Dateigröße von " . $max_filesize_mb . "MB überschritten."]);
exit;
}

$unique_file_name = uniqid() . "-" . $file_name;
$target_file = $uploads_dir . $unique_file_name;

if (move_uploaded_file($file["tmp_name"], $target_file)) {
$uploaded_files[] = [
"name" => $file_name,
"path" => $target_file,
"size" => $file["size"]
];
} else {
http_response_code(500);
echo json_encode(["success" => false, "message" => "Fehler beim Hochladen der Datei."]);
exit;
}

$mail_content_html .= "<p style=\"margin-top: 20px;\"><strong>Anhang:</strong> " . htmlspecialchars($file_name) . " (" . number_format($file["size"] / 1024, 1) . " KB)</p>";
$mail_content_text .= "\nAnhang: " . htmlspecialchars($file_name) . " (" . number_format($file["size"] / 1024, 1) . " KB)\n";
}
}
}

// E-MAIL VERSENDEN - KORRIGIERTE VERSION
$main_mail_sent = false;

try {
$mail = new PHPMailer(true);

// SMTP-Konfigurationsprüfung
$use_smtp = isset($smtp_host) && isset($smtp_user) && isset($smtp_pass) &&
!empty($smtp_host) && !empty($smtp_user) && !empty($smtp_pass);

if ($use_smtp) {
$mail->isSMTP();
$mail->Host = $smtp_host;
$mail->SMTPAuth = true;
$mail->Username = $smtp_user;
$mail->Password = $smtp_pass;
$mail->Timeout = 60;
$mail->SMTPKeepAlive = false;

if (isset($smtp_secure) && strtolower($smtp_secure) === "ssl") {
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = isset($smtp_port) ? (int)$smtp_port : 465;
} else {
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = isset($smtp_port) ? (int)$smtp_port : 587;
}

$from_email = filter_var($smtp_user, FILTER_VALIDATE_EMAIL);
if (!$from_email) {
throw new Exception("Ungültige SMTP-Benutzer-E-Mail-Adresse: " . $smtp_user);
}

$mail->setFrom($from_email, isset($smtp_from_name) ? $smtp_from_name : $sender_name);

} else {
$mail->isMail();
$validated_recipient = filter_var($recipient_email, FILTER_VALIDATE_EMAIL);
if (!$validated_recipient) {
throw new Exception("Ungültige Empfänger-E-Mail-Adresse");
}
$mail->setFrom($validated_recipient, $sender_name);
}

$validated_recipient = filter_var($recipient_email, FILTER_VALIDATE_EMAIL);
if (!$validated_recipient) {
throw new Exception("Ungültige Empfänger-E-Mail-Adresse: " . $recipient_email);
}

$mail->addAddress($validated_recipient);

if ($sender_email && filter_var($sender_email, FILTER_VALIDATE_EMAIL)) {
$mail->addReplyTo($sender_email);
}

foreach ($uploaded_files as $file) {
if (file_exists($file["path"])) {
$mail->addAttachment($file["path"], $file["name"]);
}
}

$mail->isHTML(true);
$mail->Subject = $subject;
$mail->Body = $mail_content_html;
$mail->AltBody = strip_tags($mail_content_text);
$mail->CharSet = "UTF-8";
$mail->Encoding = "base64";

$mail->send();
$main_mail_sent = true;

} catch (Exception $e) {
error_log("Mail Error: " . $e->getMessage());

$error_message = "Fehler beim Senden der E-Mail.";

if (strpos($e->getMessage(), "SMTP connect()") !== false) {
$error_message = "SMTP-Verbindung fehlgeschlagen. Prüfen Sie Host und Port.";
} elseif (strpos($e->getMessage(), "SMTP Error: Could not authenticate") !== false) {
$error_message = "SMTP-Authentifizierung fehlgeschlagen. Prüfen Sie Benutzername und Passwort.";
} elseif (strpos($e->getMessage(), "mailbox unavailable") !== false) {
$error_message = "E-Mail-Adresse ungültig oder Mailbox nicht verfügbar.";
} elseif (strpos($e->getMessage(), "Invalid address") !== false) {
$error_message = "Ungültige E-Mail-Adresse erkannt.";
}

http_response_code(500);
echo json_encode([
"success" => false,
"message" => $error_message,
"debug" => "Technische Details wurden protokolliert."
]);
exit;
}

// AUTOMATISCHE ANTWORT
if ($main_mail_sent && $enable_auto_reply && !empty($sender_email)) {

$validated_sender = filter_var($sender_email, FILTER_VALIDATE_EMAIL);
if ($validated_sender) {

$auto_reply_body_text = $auto_reply_message;
$auto_reply_body_html = nl2br(htmlspecialchars($auto_reply_message));

if ($auto_reply_include_original) {
$original_message = "\n\n" . str_repeat("-", 50) . "\nIhre ursprüngliche Nachricht:\n\n";
$original_html = "<hr style=\"margin: 30px 0;\"><h3>Ihre ursprüngliche Nachricht:</h3>";

foreach ($_POST as $key => $value) {
if ($key === "captcha" || $key === "csrf_token" || $key === "name_hp") continue;
$label = ucfirst(str_replace(["_", "-"], " ", $key));
$value_display = is_array($value) ? implode(", ", $value) : $value;

$original_message .= $label . ": " . $value_display . "\n";
$original_html .= "<p><strong>" . htmlspecialchars($label) . ":</strong> " . htmlspecialchars($value_display) . "</p>";
}

$auto_reply_body_text .= $original_message;
$auto_reply_body_html .= $original_html;
}

try {
$auto_mail = new PHPMailer(true);

if ($use_smtp) {
$auto_mail->isSMTP();
$auto_mail->Host = $smtp_host;
$auto_mail->SMTPAuth = true;
$auto_mail->Username = $smtp_user;
$auto_mail->Password = $smtp_pass;
$auto_mail->Timeout = 60;

if (isset($smtp_secure) && strtolower($smtp_secure) === "ssl") {
$auto_mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$auto_mail->Port = isset($smtp_port) ? (int)$smtp_port : 465;
} else {
$auto_mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$auto_mail->Port = isset($smtp_port) ? (int)$smtp_port : 587;
}

$auto_mail->setFrom($smtp_user, $auto_reply_sender_name);
} else {
$auto_mail->isMail();
$auto_mail->setFrom($validated_recipient, $auto_reply_sender_name);
}

$auto_mail->addAddress($validated_sender);
$auto_mail->isHTML($auto_reply_html_format);
$auto_mail->Subject = $auto_reply_subject;
$auto_mail->Body = $auto_reply_body_html;
$auto_mail->AltBody = strip_tags($auto_reply_body_text);
$auto_mail->CharSet = "UTF-8";
$auto_mail->Encoding = "base64";

$auto_mail->send();

} catch (Exception $e) {
error_log("Auto-Reply Error: " . $e->getMessage());
}
}
}

// CAPTCHA-Session löschen
unset($_SESSION["captcha_sum"]);


echo json_encode(["success" => true, "message" => $success_message]);
exit;

} else {
http_response_code(403);
echo json_encode(["success" => false, "message" => "Direkter Zugriff nicht erlaubt."]);
exit;
}
?>
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Moin,

kann leider erst heute Nachmittag erneut testen - sorry :(
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Habe getestet.

🔹Beide Ports (465=SMTPS, 587=STARTTLS) funktionieren nun :tu:

"Die Ports 465 und 587 werden im Zusammenhang mit SMTP (Simple Mail Transfer Protocol) verwendet, um E-Mails sicher zu versenden. Port 465 wird traditionell für SMTPS (SMTP über SSL) verwendet, während Port 587 der Standard für STARTTLS ist, eine Methode zur Verschlüsselung von E-Mail-Verbindungen"


🔹Die Mail-Adresse muss geprüft werden, das ist im Moment nicht der Fall:

Mail.jpg


🔹Das Mathe-Captcha und das Bild-Captcha funktionieren gut :tu:

https://www.mobirise-tutorials.com/Test ... /SMTPMail/


🔹Es funktioniert sowohl mit als auch ohne automatische Kopie der E-Mail. Die Kopie an den Absender wird nicht im HTML-Format geschickt obwohl gewählt, aber das ist eigentlich völlig egal.


🔹Im Moment wird bei meinem Testformular eine Kopie an den Absender geschickt, das sollte irgendwo am Formular dann auch vermerkt werden. Man sollte niemandem ohne die Einwilligung der betroffenen Person eine E-Mail als Kopie senden. Wie bereits erwähnt, da währe ein Kontrollkästchen als Option besser - so wie bei meinem Formular von der KI:

https://www.mobirise-tutorials.com/Tuto ... eriert.php


🔹Ein Kontrollkästchen sollte standardmäßig vor dem Button „Senden“ platziert sein, mit dem der Nutzer seine Zustimmung zur Datenschutzerklärung durch Ankreuzen bestätigt. In Europa ist dies gesetzlich vorgeschrieben.


🔹Die Upload-Funktion habe ich bislang nicht geprüft, da mir dieser Bereich etwas suspekt erscheint. Ein Upload auf den eigenen Server birgt erhebliche Sicherheitsrisiken und sollte daher sorgfältig geprüft werden.


🔹Gern würde ich Deinen "Gemini-Formular-Generator" von meiner Seite aus verlinken, sobald er grundsätzlich stabil läuft. Die verlinkende Seite sollte idealerweise eine dauerhafte URL erhalten, damit der Link nicht ins Leere führt.


🔹Super - geht alles :)

Erfolg.jpg



🔹P.S.:

Ich würde alles im PHPMailer drinnen lassen, Du hast jetzt alles, außer den drei notwendigen Dateien, gelöscht - warum? Das verwirrt :confused:

Die Leute werden und sollen den PHPMailer ja bei Bedarf mit einer neueren Version auch austauschen und müssen auch wissen, welche Version vom PHPMailer von dir verwendet wird, z.Zt. ist es v6.10.0 - diese Version steht normalerweise dann in der Datei "VERSION" im Hauptverzeichnis vom PHPMailer.
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

Hallo Tommy,
vielen Dank für Deine ausführlichen Tests :tu: :tu: :tu: :tu:

Das bringt mich weiter und Du hast vollkommen Recht - Email Validierung hatte ich vergessen und nun natürlich drin.

Zum Thema PHP Mailer - Den hat mir die KI raus genommen und nur die relevanten Daten implementiert. Das finde ich jetzt nicht schlimm, da der Generator ja auf meinem Sever läuft und ich immer die stabilste und aktuellste Version einbinde. Natürlich kann der Nutzer später auch jede andere Version nutzen oder den kompletten PHPMailer in sein Verzeichnis kopieren.
Habe ich wieder geändert PHPMailer ist komplett drin

Zum Thema Datenschutz anhaken
Das kann man doch in dem Formular per Checkbox realisieren. Ich habe die maskierung der Hifstexte entfernt. So kann man also HTML Code dort rein schreiben und das ganze als Pflichtfeld hinzufügen. Siehe hier mein Test: https://www.niederastroth.de/formgenerator/test/
Nicht jedes Formular braucht einen Datenschutz ;) Du kannst ja auch andere Formulare mit dem Generator machen, als nur Kontaktformulare. Z.B. interne Intranet Formulare, Formulare im geschützten Bereich usw.

Zum Thema automatische Antwort:
Das ist ja eine Option, die man erste aktivieren muss. Im normalen Fall bekommt der Formular Ausfüller nur eine Bestätigungsseite angezeigt und weiß das sein Formular versendet wurde.
Die Option Autoantwort ist eigentlich dafür gedacht, das man die verwendet wenn man z.B. Betriebsferien hat und das dem Absender mitteilen möchte das Antworten etwas länger dauern. Man muss ja auch nicht zwingend die ursprüngliche Mail mit senden. Das kann man ja auch ausschalten.
Wenn ich jetzt noch einen Button einbauen würde um eine Kopie zu senden, komme ich da in Konflikt mit dem was Frontend und Backend austauschen an Informationen und deswegen verzichte ich darauf.
Die Formulardaten und alles was dazu gehört werden ja dynamisch durch ein PHP Script erzeugt und da reicht auch mein Wissen nicht aus um das entweder oder zu machen :confused:

Ich finde ich habe jetzt einen Formular Generator am Start, der sich sehen lassen kann und werde auch noch ein ausführliches Video dazu machen um die Bedienung zu erklären ( im Moment ist da ein anderes Video als Platzhalter von mir)

Zum Thema upload Ordner : Der wird immer mit angelegt, weil man ja die Möglichkeit hat Anhänge per Formular mit zu senden. Natürlich ist das auch immer ein Einfallstor für Hacker und Spammer. Eine Sicherheitsmaßname ist diese :
// Eindeutigen Dateinamen erstellen und in den uploads-Ordner verschieben
$unique_file_name = uniqid() . "-" . $file_name;
$target_file = $uploads_dir . $unique_file_name;
Da ich ja jetzt komplett auf eine .htaccess verzichtet habe, muss das jeder für sich und seine Serverumgebung selber machen. Da mache ich aber noch einige Vorschläge für die .htaccess die dann jeder, je nach Formular Konfiguration bei sich einbauen kann. Also eine Anleitung.

Der Link zu dem Formular Generator ist und bleibt: https://www.niederastroth.de/formgenerator/

Da ich ja eine Speicher und Import Funktion habe, kann ich dir dieses Testformular auch hier als Download anbieten. Das kann Du dann im Formulargenerator einfach laden :D
https://www.niederastroth.de/formgenerator/formular.7z


Hier mal ein Beispiel für einen Apache Server um den Ordner uploads zu schützen: die .htaccess kommt in den uploads ordner !
# Komplett verbieten der Ausführung von Scripts
Options -ExecCGI -Indexes
RemoveHandler .php .phtml .php3 .php4 .php5 .php7 .php8 .pl .py .jsp .asp .sh .cgi

# PHP-Ausführung komplett deaktivieren
php_flag engine off

# Gefährliche Dateitypen blockieren
<Files ~ "\.(php|phtml|php3|php4|php5|php7|php8|pl|py|jsp|asp|sh|cgi|exe|bat|com|scr|vbs|js|jar|class)$">
Order Allow,Deny
Deny from all
</Files>

# .htaccess und andere sensible Dateien schützen
<Files ~ "^\.ht">
Order Allow,Deny
Deny from all
</Files>

# Nur bestimmte Dateitypen erlauben (anpassen nach Bedarf)
<FilesMatch "\.(jpg|jpeg|png|gif|pdf|doc|docx|txt|zip|rar)$">
Order Allow,Deny
Allow from all
</FilesMatch>

# Alle anderen Dateitypen blockieren
<FilesMatch ".*">
Order Allow,Deny
Deny from all
</FilesMatch>

# Directory Browsing verhindern
Options -Indexes

# Server-Signatur ausblenden
ServerSignature Off

# Hotlinking verhindern (optional - Domain anpassen)
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?deine-domain\.de [NC]
RewriteRule \.(jpg|jpeg|png|gif|pdf)$ - [F,L]

# File-Upload-Limits (falls PHP trotz Deaktivierung irgendwie läuft)
php_value upload_max_filesize 10M
php_value post_max_size 10M

# Gefährliche HTTP-Methoden blockieren
<Limit PUT DELETE PATCH>
Order Allow,Deny
Deny from all
</Limit>

# Content-Type Sniffing verhindern
<IfModule mod_headers.c>
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
</IfModule>
Diese .htaccess läuft auf meinem Server ohne Probleme und schützt zuverlässig den Ordner uploads

Und wie immer die Bitte .... Ich würde mich auch von anderen Usern hier über feedback freuen und wenn auch ihr den Generator mal ausprobiert und Eure Erfahrung hier postet.
Gruß Volker
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

Ich arbeite an der Lösung für die Kopie an den Absender :D
kopie.png
Im Frontend schon eingebaut und im backend wird das mit cc gelöst :D Aber erst morgen, dann habe ich aber auch alles drin.
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Moin,

> ja klar "kann" man eine Checkbox selbst erstellen um die Datenschutzerklärung zu akzeptieren, nur wissen das die meisten nicht einmal.

Ich fände es einen guten Service und eine Überlegung wert (muss aber nicht sein), das schon mal per Default da stehen zu haben, also so wie ganz am Beginn Deiner Versuche und wie die Buttons von der KI zur Erstellung der Felder auch angelegt sind - diese Felder bereits per Default stehen zu haben und die alle zu Pflichtfeldern zu machen, denn das sollten sie sein, weil es keinen Sinn macht auch nur eines der Felder leer zu lassen - ich brauche z.B. keine E-Mail ohne "Nachricht":
> Name [Text-Feld] > E-Mail [Email-Feld] > Nachricht [Textarea-Feld] > Checkbox [Checkbox]

> Ich denke schon, dass jedes Formular automatisch die Einwilligung vom Benutzer benötigt, denn der kann ja nicht wissen was mit den Daten, die er eingibt überhaupt gemacht wird. Egal ob das als E-Mail oder eben anders verarbeitet wird. Jedes Formular schickt irgendeinen Inhalt immer irgendwo hin, auch wenn es nur an eine andere Seite oder in eine Datenbank ist. Das weiß aber ein Anwalt besser. Außerdem kann man ja jedes Feld bequem auch wieder löschen.

> Bei der automatischen Antwort bin ich ganz anderer Meinung (weiß es aber nicht). Meiner Ansicht nach darf man gar keine E-Mail an jemanden senden ohne dass dieser das ausdrücklich verlangt, genau wie man niemanden anrufen darf um etwas zu verkaufen, ohne vorher die Zustimmung zu erhalten. Das wäre dann Spam. Das ist heutzutage gesetzlich verboten. Wenn Du diesen Schalter einschaltest bekommt doch jeder Benutzer eben eine Mail, die er vielleicht gar nicht haben will. Das ist nicht erlaubt. Deswegen mein Vorschlag mit der Checkbox.

Wie man das macht, kann sich Deine KI ja bei meiner KI abgucken :D

> Der Schutz vom Upload-Ordner sieht für mich gut aus - aber ich bin nicht wirklich Experte in dieser Hinsicht. Dennoch glaube ich dass das gut ist. Eigentlich sollte auch einfach alles verbieten vollkommen ausreichen, so hat es auch Werner immer gemacht. Diesen vielen Methoden sind doch Quatsch:

Ausschließlicher Inhalt der .htaccess für den Orner upload um jeden Zugang von außen zu unterbinden:

Code: Alles auswählen

order deny,allow
deny from all
> Der Upload selbst darf selbstverständlich nur zulässige Dateitypen akzeptieren und ganz sicher keinerlei ausführbare Dateitypen wie z.B. .exe. Wobei es kein absolut sicheres Upload gibt und ich es daher eigentlich gar nicht verwende :angst:

Das sagt meine Elena von ChatGPT dazu:

https://chatgpt.com/share/68a5315f-3c48 ... 1981f34230

Fazit:

✅ Am sichersten: jpg|jpeg|png|gif|webp|pdf|txt

⚠️ Mit Vorsicht, nur mit Scans: doc|docx|xls|xlsx|zip|rar

❌ Besser blockieren: exe|msi|bat|sh|js|php|svg
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

Ich fang mal mit einem Zitat an :D (KI)
Autoresponder an sich sind nicht generell verboten, aber es gibt Einschränkungen, insbesondere bei der Verwendung von Werbung in automatischen Antwort-E-Mails. Eine automatische Antwort mit werbendem Inhalt ohne vorherige Einwilligung des Empfängers ist unzulässig und kann abgemahnt werden, wie Gerichte entschieden haben.
Erläuterung:
Grundsätzlich zulässig:
Autoresponder, wie z.B. Abwesenheitsnotizen, sind grundsätzlich erlaubt, da sie auf vorherige Nachrichten des Empfängers antworten und keinen Spam darstellen.
Werbung in Autorespondern:
Die Verwendung von Werbung in Autoresponder-E-Mails ist problematisch. Der Bundesgerichtshof (BGH) hat entschieden, dass Werbung in automatischen Antwortnachrichten ohne vorherige Einwilligung des Empfängers unzulässig ist.
Abmahnung:
Unternehmen, die Werbung in Autorespondern ohne Einwilligung versenden, riskieren Abmahnungen und können zur Zahlung von Schadensersatz verurteilt werden.
Einwilligung:
Für die rechtmäßige Verwendung von Werbung in Autorespondern ist die vorherige ausdrückliche Einwilligung des Empfängers erforderlich.
DSGVO:
Die Datenschutzgrundverordnung (DSGVO) hat zwar die Regeln für Werbung im Allgemeinen verschärft, aber für Autoresponder gilt weiterhin, dass Werbung ohne Einwilligung unzulässig ist, so die Kanzlei Plutte.
Ausnahme für Bestandskunden:
Unter engen Voraussetzungen kann Werbung an Bestandskunden auch ohne explizite Einwilligung zulässig sein, dies ist jedoch im Einzelfall zu prüfen.
Konsequenzen:
Unternehmen, die gegen diese Regeln verstoßen, können mit Abmahnungen und Schadensersatzforderungen rechnen.
Auf Deutsch : Wer eine Mail sendet - egal ob per Outlook oder einem Webformular, der muss auch damit rechnen eine Antwort zu erhalten.
Ich habe z.B. früher mit Daimler Benz Mails ausgetauscht. Wenn ein Mitarbeiter bei denen in Urlaub ist, kommt immer eine Responder zurück, mit dem Hinweis das meine Mail nicht gelesen wird und ich diese bitte nach dem xx.xx2025 nochmals senden muss, da sie gelöscht wird.

Ich habe aber jetzt in den Templates das Standard Formular mit Datenschutz eingebaut.

Ich werde auch alle Dinge in dem Video erklären. Z.B. das man die Felder für eine bessere Übersicht auch einklappen kann ( schon gesehen ?)
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Meiner Ansicht nach ist ein Autoresponder etwas völlig anderes.

Wenn dir jemand eine E-Mail schreibt und du beispielsweise im Urlaub bist und vorübergehend nicht antworten kannst, richtet man eine automatische Abwesenheits- bzw. Antwort-Mail ein.

Hier wird jedoch dauerhaft und immer eine E-Mail an den Absender gesendet, der sie nie bestellt hat. Das ist etwas ganz anderes; das ist kein temporärer Autoresponder. Natürlich erhält der Absender in der Regel eine weitere E-Mail – die eigentliche Antwort auf seine Anfrage.

Wie du es am Ende machst, bleibt natürlich deine Sache. Ich kann nach dem Testen hier nur meine Gedanken weitergeben.
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

Tommy Herrmann hat geschrieben: Mi 20. Aug 2025, 10:16 Hier wird jedoch dauerhaft und immer eine E-Mail an den Absender gesendet, der sie nie bestellt hat. Das ist etwas ganz anderes; das ist kein temporärer Autoresponder. Natürlich erhält der Absender in der Regel eine weitere E-Mail – die eigentliche Antwort auf seine Anfrage.
Da kann man unterschiedlicher Meinung sein - keine Frage.
Aber ob das jemand einschaltet oder nicht, ist mir auch wuppe ;)
Fakt ist aber auch, dass ich wenn ich meiner Bank über das Webformular schreibe ich eine Automail erhalte, wenn ich bei Netcom BW über das Webformular schreibe eine Automail bekomme und und und. Bei vielen Unternehmen bekommst du automatisch eine Ticket Nr. die mit im Automailer ist, z.B. bei meinem Provider Hosteurope, wenn ich da was über das Webformular schreiben...also es gibt unzählige Anlässe den zu nutzen. Der Kunde ( Anfrager ) ist genervt wenn er eine Automail bekommt oder er fühlt sich gut aufgehoben bei der jeweiligen Firma/ Behörde usw. Eins von beiden :D

Ich lasse den auf jeden Fall drin und werde im Video auch nochmal darauf eingehen und gehe auch mal davon aus, das jemand der eine private Website betreibt den nicht unbedingt aktiviert nur weil er zur Verfügung steht.

Der Formulargenerator soll eben so viel bieten wie möglich - Das war und ist mein Ziel. Es werden auch noch diverse Templates hinzukommen um einiges an Bedürfnissen abzudecken. Jeder kann ja dann Felder hinzufügen oder löschen wenn er die nicht braucht. Das ist doch das schöne an dem Ding.

Auch die Option Kopie an mich wird noch eingebaut. Die kann man dann auch nutzen oder eben nicht.

Ich plane auch noch andere Mailer einzubinden und eventuell auch noch die Möglichkeit das Layout der Formulare im Generator anzupassen usw. usw.
Gruß Volker
Benutzeravatar
vloppy
Mitglied (Level 9)
Mitglied (Level 9)
Beiträge: 85
Registriert: Fr 11. Dez 2020, 11:34
Wohnort: Kempen

Re: Neuer Formulargenerator

Beitrag von vloppy »

Viel Arbeit und Anerkennung, aber ARCLAB hat das dann doch immer sehr gut erledigt - trotzdem Respekt für Deinen Einsatz. Was mich bei allen Formularen immer geärgert hat: Vielen Dank für ......, ist angekommen. Aber ich bekam nie eine Kopie von dem was ich da gesendet hatte, und daher war und bin ich von den ARCAB Formularen begeistert, das war dann eine 1:1 Kopie von dem was ich übermittelt habe. Aber weiter so, man hat ja sonst nix zu tun. Ich habe, wie gesagt, unser Kleinunternehmen am 01.04.25 aufgegeben und hoffe nun nächstes Jahr keinen grossen Kampf mit unserem allen gemeinsamen größten Feind dann aufnehmen zu müssen - dem FINANZAMT. LG Vloppy
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

Moin Tommy,

ich bitte mal wieder um Prüfung und Test Deinerseits :D

Hier das Testverzeichnis: https://www.niederastroth.de/00/

Ich hab es jetzt so gelöst, das bei jedem Formular welches erstellt wird, eine Checkbox mit Kopie an mich angeheftet wird. Ich hatte Probleme das über den Editor einzubinden, weil ja bereits das mit dem Automailer drin ist.

Ich finde kann man so machen - Oder ?
Wäre cool Du testest mal auch SMTP - Nicht das ich da wieder Fehler drin habe :angst:

So sieht so ein Formular aus: https://www.niederastroth.de/00/test/
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Moin,

geht nicht:

"ungültiges Token"



Ungültiger Token.jpg
Volker
Moderator
Moderator
Beiträge: 1431
Registriert: Sa 12. Dez 2020, 22:35

Re: Neuer Formulargenerator

Beitrag von Volker »

Hi Tommy,

was ich nicht verstehe ist, warum das Bild Captcha bei nicht lädt. Bei mir geht das.
Kannst Du mal testen ob SMTP mit Rechen Captcha bei dir geht. Ich finde den Fehler im Moment nicht :confused:

Hier mein Formular mit Bild Captcha: https://www.niederastroth.de/00/test/index.php

Ich habe jetzt auch noch mal SMTP Tests durchgeführt und keine Fehler gefunden. Wäre echt klasse wenn Du Tommy oder auch gerne andere das nochmals prüfen möchten.

Die Readme.txt wurde auch entsprechend angepasst, damit jeder weiß was zu tun ist ;)
Im Moment ist diese neue Version in einem Testverzeichnis : https://www.niederastroth.de/00/

Ich gehe aber davon aus, das die morgen die Finale Version sein wird, da ich jetzt keine Fehler mehr feststellen konnte und ich damit leben kann, das jedem Formular die Kopie Option angehängt wird.

Hier mal eine SMTP Testdatei die die Verbindung zum SMTP Server testet und eine Testmail versendet :

Code: Alles auswählen

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// Pfad zum PHPMailer-Verzeichnis anpassen, falls nötig
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

$mail = new PHPMailer(true);

try {
    // Server-Einstellungen
    $mail->isSMTP();
    $mail->Host       = 'euer SMTP Server.de'; // SMTP-Host-Adresse
    $mail->SMTPAuth   = true;
    $mail->Username   = 'Meistens die E-Mailadresse'; // SMTP-Benutzername
    $mail->Password   = 'Passwort; // SMTP-Passwort
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
    $mail->Port       = 465;

    // Empfänger
    $mail->setFrom('Absender ', 'Test');
    $mail->addAddress('Empfänger Adresse');

    // Inhalt
    $mail->isHTML(false);
    $mail->Subject = 'SMTP Test E-Mail';
    $mail->Body    = 'Diese E-Mail wurde zu Testzwecken gesendet.';

    $mail->send();
    echo 'Nachricht erfolgreich gesendet.';
} catch (Exception $e) {
    echo "Nachricht konnte nicht gesendet werden. Mailer Error: {$mail->ErrorInfo}";
}

?>
Das PHPMailer Verzeichnis muss natürlich im selben Ordner liegen wie die smtptest.php ;)


Finale Version ist nun online und hier zu finden : https://www.niederastroth.de/formgenerator
NEUE FUNKTIONEN:
- Automatische Kopie-Checkbox: Bei jedem generierten Formular wird eine Checkbox hinzugefügt, die es dem Absender ermöglicht, eine Kopie seiner Nachricht zu erhalten
- Die Kopie wird an die im Formular angegebene E-Mail-Adresse gesendet und enthält alle Formulardaten sowie Anhänge
- Verbesserte SMTP-Unterstützung mit automatischem Fallback und detaillierter Fehlerbehandlung

SMTP-VERBESSERUNGEN:
- Automatische Validierung der SMTP-Konfiguration
- Intelligenter Fallback auf Standard-Mail bei SMTP-Problemen
- Spezifische Fehlermeldungen für verschiedene SMTP-Probleme
- Retry-Mechanismus bei temporären Verbindungsfehlern
- SSL/TLS-Optionen für problematische Server
- Timeout-Einstellungen zur Vermeidung hängender Verbindungen
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7752
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Neuer Formulargenerator

Beitrag von Tommy Herrmann »

Moin,

ich habe die von Dir zuletzt als "Finale Version" markierte Version getestet:

https://www.niederastroth.de/formgenerator/

Es tut mir leid - aber es ist immer noch gleich und funktioniert nicht. Ich habe das mit beiden Ports getestet und es ging beide mal nicht.

Schon der bloße Klick auf den Senden-Button löst die Fehlermeldung "Ungültiges Token" aus – unabhängig davon, ob ich Felder im Formular ausfülle oder nicht.




> Test mit Bild-Captcha:

https://www.mobirise-tutorials.com/Test ... lker/Test/

> Ungültiges Token
> Captcha kann nicht angezeigt werden (das scheint aber mit der Meldung "Ungültiges Token" zusammenzuhängen)

Test-Formular.jpg


> Weiterer Test hier mit Mathe-Captcha:

https://www.mobirise-tutorials.com/Test ... est-Mathe/

> Ungültiges Token



> Hier nochmals die vorherige Version, diese Version ging doch bereits inklusive Bild-Captcha fehlerfrei:

https://www.mobirise-tutorials.com/Test ... /SMTPMail/

Ich denke es bleibt nichts anderes übrig als vorerst zu dieser Version zurückzukehren und dann Schritt für Schritt zu prüfen. Denke auch daran, dass die KI immer wieder total blöde Fehler machen kann.

Was ist denn das für ein `Token` und wozu soll das gut sein? War das denn auch schon bei der funktionierenden Version so dabei?



Geht es denn jetzt nur um die Checkbox mit der Option eine Kopie an den Absender zu senden? Das geht doch mit einer einfachen IF-Bedingung:

Code: Alles auswählen

// Nur wenn gewünscht: Kopie an den Absender
if ($sendcopy) {
    $mail->addCC($email);
}
Formularfeld:

Code: Alles auswählen

        <!-- Kopie an mich -->
        <div class="row">
            <label class="checkbox-inline">
                <input type="checkbox" name="sendcopy" value="1" <?= isset($_POST['sendcopy']) ? 'checked' : '' ?>>
                <span>Ich möchte eine Kopie dieser Nachricht per E-Mail erhalten.</span>
            </label>
        </div>

Code: Alles auswählen

    // Eingaben einsammeln
    $name      = trim($_POST['name'] ?? '');
    $ort       = trim($_POST['ort'] ?? '');
    $email     = trim($_POST['email'] ?? '');
    $betreff   = trim($_POST['betreff'] ?? '');
    $nachricht = trim($_POST['nachricht'] ?? '');
    $privacy   = isset($_POST['privacy']);
    $sendcopy  = isset($_POST['sendcopy']);   // Checkbox: Kopie senden
    $captcha   = trim($_POST['captcha'] ?? '');
Lade Dir mal mein Beispielformular von ChatGPT auf meiner Seite herunter, da funktioniert das alles einwandfrei:

https://www.mobirise-tutorials.com/Tuto ... eriert.php
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste