Zusammenfassung

Viele Kontaktformulare in WordPress speichern standardmäßig die hochgeladenen Anhänge auf dem Server. Diese Vorgehensweise kann gegen die DSGVO verstoßen, da personenbezogene Daten ohne entsprechende Einwilligung und Schutzmaßnahmen gespeichert werden. In diesem Artikel zeige ich, wie man einen Mechanismus implementiert, der die Dateien nach dem Versand der E-Mail automatisch löscht, um die Datensicherheit zu erhöhen und das Risiko von Datenschutzverstößen zu minimieren.

Warum sollten Anhänge gelöscht werden?

Rechtliche Aspekte und Datensicherheit

  • DSGVO: Die Speicherung personenbezogener Daten, einschließlich Anhängen, muss den europäischen Datenschutzbestimmungen entsprechen.
  • Sicherheit: Das Löschen der Dateien nach deren Verwendung reduziert das Risiko eines Datenlecks.

Das Problem der ursprünglichen Lösung

Die ursprüngliche Implementierung hatte mehrere Einschränkungen:

  • Unterstützung nur für einen einzelnen Datei-Upload.
  • Keine Unterstützung für mehrere Anhänge.
  • Unzureichender Löschmechanismus – die Anhänge blieben auf dem Server gespeichert, was das Risiko von DSGVO-Verstößen erhöht.

Vollständiger Code der Lösung

Im Folgenden finden Sie den kompletten Plugin-Code, den ich in meinen Projekten implementiert habe. Die Tests haben gezeigt, dass alles reibungslos funktioniert:

<?php
/*
Plugin Name: Delete Forminator Uploads
Description: Automatisches Löschen von Anhängen aus dem Kontaktformular, das auf der Forminator-Plugin basiert. Lösung gemäß DSGVO – nach dem Versand der E-Mail werden die Dateien vom Server gelöscht.
Version: 1.0
Author: Dein Name
*/

add_action('forminator_custom_form_after_send_email', 'delete_forminator_uploads', 10, 2);

function delete_forminator_uploads($entry, $form_id) {
    // Bestimmen des Upload-Verzeichnisses
    $upload_dir = wp_upload_dir();
    $uploads_path = $upload_dir['basedir'] . '/forminator';
    
    // Überprüfen, ob Dateien übermittelt wurden
    if (isset($entry['form_data']['files']) && is_array($entry['form_data']['files'])) {
        foreach ($entry['form_data']['files'] as $file) {
            // Erstellen des vollständigen Pfads zur Datei
            $file_path = $uploads_path . '/' . $file;
            // Überprüfen, ob die Datei existiert und sie löschen
            if (file_exists($file_path)) {
                if(unlink($file_path)) {
                    error_log("Datei gelöscht: " . $file_path);
                } else {
                    error_log("Datei konnte nicht gelöscht werden: " . $file_path);
                }
            }
        }
    }
}
?>

Zusammenfassung

Die Implementierung dieser Lösung ermöglicht es:

  • Hochgeladene Dateien nach dem Versand der E-Mail automatisch zu löschen.
  • Das Risiko von Verstößen gegen die DSGVO zu minimieren.
  • Die Ordnung auf dem Server zu bewahren, indem unnötige Dateien entfernt werden.

Ich habe diesen Code bereits in meinen Projekten übernommen und kann bestätigen, dass alles einwandfrei funktioniert. Wenn Sie Unterstützung benötigen, kontaktieren Sie mich bitte hier