
Anleitung zum Kontaktformular

Dies ist ein generiertes PHP-Formular mit erweiterten CAPTCHA-Funktionen und automatischer Kopie-Funktionalität.
© 2025 Volker Niederastroth 
Haftungsausschluss / Disclaimer
Version vom 25.08.2025

Die bereitgestellten PHP-Skripte werden ohne jegliche Gewährleistung zur Verfügung gestellt. 
Der Anbieter übernimmt keine Verantwortung für Schäden, Datenverluste, Fehlfunktionen oder sonstige Nachteile, die durch die Nutzung der Skripte entstehen könnten. 
Die Nutzung erfolgt auf eigenes Risiko. 
Jegliche Haftung – gleich aus welchem Rechtsgrund – ist soweit gesetzlich zulässig ausgeschlossen.

WICHTIGER HINWEIS
Bitte verhindert den direkten Aufruf der geframten Seite wie folgt
Bitte diesen Code unter die Meta-Tags setzen bei den Dateien `index.php` und `success.php`
<script>
        if ( self == top ) { location.href = "https://www.deinedomian.de/Pfad/seitenname.php"; }
    </script>
Dadurch wird auf die angegebene URL umgeleitet, wenn diese geframten Seiten direkt aufgerufen werden sollten.

IFRAME OPTIMIERUNG
- Wenn das Formular in einem Iframe läuft sind schon Scripte dafür implementiert.
- Das ist der Einbaucode in Eurer Webseite:
<iframe id="myFrame" src="https://deinedomain/deinverzeichnis/index.php"></iframe> 
- In Mobirise muss der Block in dem das Iframe eingebaut ist zwingen den Namen Formular haben
- Das Iframe muss die id="myFrame" haben - sonst funktioniert das ganze nicht !


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

Um einen noch besseren Schutz zu erhalten empfehle ich eine .htaccess Datei zu erstellen.
Diese schützt zuverlässig den uploads Ordner und kommt auch in diesen !

# 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>

Installation

1.  Laden Sie den Inhalt dieses Ordners auf Ihren Webserver hoch.
2.  Stellen Sie sicher, dass Ihr Webserver PHP mit GD-Extension unterstützt (für Bild-CAPTCHA).
3.  Die Datei `send.php` ist so konfiguriert, dass sie E-Mails an die in der Konfiguration angegebene Adresse sendet.
4.  Der Ordner `uploads` dient als temporärer Speicherort für hochgeladene Dateien. Achten Sie auf die korrekten Schreibrechte (typischerweise 755 oder 775).
Wenn keine Daten hochgeladen werden, kann der auch gelöscht werden


Sicherheitsfeatures:
- CSRF-Token-Schutz
- Honeypot-Anti-Spam-Feld
- Zeitbasierte Spam-Erkennung
- Automatische Kopie-Checkbox für Absender
- Kein CAPTCHA

Kopie-Funktion:
- Bei jedem Formular wird automatisch eine Checkbox "Kopie an mich senden" hinzugefügt
- Wenn aktiviert, erhält der Absender eine Kopie seiner Nachricht an die angegebene E-Mail-Adresse
- Die Kopie enthält alle Formulardaten und Anhänge
- Die Kopie wird zusätzlich zur normalen Formular-E-Mail und automatischen Antwort versendet

SMTP-Konfiguration:
Um SMTP zu verwenden, entkommentieren Sie die entsprechenden Zeilen in der send.php und tragen Sie Ihre Daten ein:
- $smtp_host: Ihr SMTP-Server (z.B. smtp.gmail.com)
- $smtp_port: SMTP-Port (587 für TLS, 465 für SSL)
- $smtp_secure: Verschlüsselung ("tls" oder "ssl")
- $smtp_user: Ihr SMTP-Benutzername
- $smtp_pass: Ihr SMTP-Passwort
- $smtp_from_name: Name des Absenders

Das System erkennt automatisch, ob SMTP konfiguriert ist und verwendet es entsprechend.
Bei Problemen wird automatisch auf Standard-PHP-Mail zurückgegriffen.

