Streszczenie

Wiele formularzy kontaktowych na WordPress, zwłaszcza tych korzystających z wtyczki Forminator, domyślnie zapisuje przesłane załączniki na serwerze. Takie rozwiązanie może być niezgodne z RODO, ponieważ dane użytkowników są przechowywane bez odpowiedniej zgody oraz zabezpieczeń. W tym artykule przedstawiam, jak wdrożyć mechanizm automatycznego usuwania plików, co zwiększa bezpieczeństwo danych i minimalizuje ryzyko naruszenia przepisów o ochronie danych osobowych.

Wprowadzenie

Podczas pracy nad stronami WordPress natrafiłem na problem, w którym przesyłane przez formularz załączniki pozostawały na serwerze. Taka sytuacja jest nie tylko nieefektywna, ale i niezgodna z wymogami RODO. Dlatego zdecydowałem się stworzyć własne rozwiązanie – MU Plugin, który automatycznie usuwa pliki zaraz po wysłaniu wiadomości e-mail. W niniejszym poradniku opisuję:

  • Dlaczego domyślne przechowywanie załączników jest problematyczne.
  • Jakie kroki należy podjąć, aby wdrożyć automatyczne usuwanie plików.
  • Pełny kod wtyczki, który możesz od razu wykorzystać.

Dlaczego warto usuwać załączniki?

Kwestie prawne i bezpieczeństwo

  • RODO: Zgodnie z europejskimi przepisami o ochronie danych, przechowywanie danych osobowych, w tym załączników, musi odbywać się zgodnie z określonymi standardami. Przechowywanie plików na serwerze bez odpowiednich zabezpieczeń może narazić Cię na sankcje.
  • Bezpieczeństwo danych: Usuwanie plików po ich wykorzystaniu redukuje ryzyko wycieku wrażliwych informacji i utrzymuje porządek w katalogu uploads.

Problem oryginalnego rozwiązania

Wtyczka, którą wykorzystałem jako bazę, miała kilka ograniczeń:

  • Obsługa jednego pliku: Oryginalny kod był przeznaczony jedynie do obsługi pojedynczego załącznika.
  • Brak wsparcia dla wielu plików: Formularze umożliwiające przesyłanie wielu plików nie były wspierane.
  • Nieskuteczny mechanizm usuwania: Załączniki pozostawały na serwerze, co zwiększało ryzyko naruszenia RODO, zwłaszcza przy losowych nazwach plików generowanych przez Forminatora.

Pełny kod rozwiązania

Poniżej znajdziesz kompletny kod wtyczki, który wdrożyłem w moich projektach. Testy potwierdziły, że wszystko działa poprawnie:

<?php
/*
Plugin Name: Delete Forminator Uploads
Description: Automatyczne usuwanie załączników z formularza kontaktowego opartego na wtyczce Forminator. Rozwiązanie zgodne z RODO – po wysłaniu wiadomości e-mail pliki są usuwane z serwera.
Version: 1.0
Author: Twoje Imię
*/

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

function delete_forminator_uploads($entry, $form_id) {
    // Ustalenie katalogu uploads
    $upload_dir = wp_upload_dir();
    $uploads_path = $upload_dir['basedir'] . '/forminator';

    // Sprawdzenie czy przesłano pliki
    if (isset($entry['form_data']['files']) && is_array($entry['form_data']['files'])) {
        foreach ($entry['form_data']['files'] as $file) {
            // Budowanie pełnej ścieżki do pliku
            $file_path = $uploads_path . '/' . $file;
            // Sprawdzenie czy plik istnieje i jego usunięcie
            if (file_exists($file_path)) {
                if(unlink($file_path)) {
                    error_log("Usunięto plik: " . $file_path);
                } else {
                    error_log("Nie udało się usunąć pliku: " . $file_path);
                }
            }
        }
    }
}
?>

Jak to działa?

  1. Hook do wysłania e-maila: Wtyczka podczepia się do akcji forminator_custom_form_after_send_email, co oznacza, że zaraz po wysłaniu wiadomości e-mail uruchamiana jest funkcja usuwająca pliki.
  2. Określenie ścieżki do folderu uploads: Dzięki funkcji wp_upload_dir() ustalamy ścieżkę do katalogu, w którym przechowywane są pliki przesyłane przez Forminatora.
  3. Przetwarzanie załączników: Jeśli formularz zawiera załączniki (jako tablicę), skrypt iteruje po każdym pliku, budując jego pełną ścieżkę i sprawdzając, czy faktycznie istnieje na serwerze.
  4. Usuwanie plików: Jeśli plik istnieje, funkcja unlink() usuwa go z serwera, a wynik operacji jest logowany (co ułatwia debugowanie).

Zastosowanie rozwiązania w praktyce

W moich projektach wdrożyłem powyższy kod, co przyniosło wymierne korzyści:

  • Bezpieczeństwo: Załączniki są usuwane natychmiast po wysłaniu wiadomości e-mail, co gwarantuje zgodność z RODO.
  • Wydajność: Utrzymanie porządku w katalogu uploads zapobiega gromadzeniu niepotrzebnych plików, co przekłada się na lepszą wydajność serwera.
  • Spokój ducha: Dzięki automatycznemu usuwaniu plików nie muszę martwić się o nieupoważnione przechowywanie danych użytkowników.

Podsumowanie

Jeżeli korzystasz z formularza kontaktowego opartego na Forminatorze i obawiasz się, że domyślne przechowywanie załączników może naruszać przepisy RODO, rozwiązanie opisane w tym artykule jest dla Ciebie. Wdrożenie przedstawionego kodu pozwala:

  • Automatycznie usuwać przesłane pliki po wysłaniu e-maila,
  • Minimalizować ryzyko naruszenia przepisów o ochronie danych osobowych,
  • Utrzymać porządek na serwerze, co zwiększa wydajność systemu.

Na podstawie moich doświadczeń mogę potwierdzić, że wdrożenie tego rozwiązania w moich projektach działa bez zarzutu.

Jeśli potrzebujesz pomocy lub masz pytania dotyczące wdrożenia tego rozwiązania, skontaktuj się ze mną!