Jak bezpiecznie zapisać dane formularza w bazie danych WordPressa

Jak zapisać dane formularza w bazie danych WordPressa; Zapisz dane formularza kontaktowego w bazie danych WordPressa; Przechowuj dane formularza WordPress w MySQL; WordPress zapisuje przesyłane formularze w bazie danych; Najlepsza wtyczka do zapisywania danych formularza w WordPressie; Przechowywanie danych formularza w bazie danych WordPressa; Jak przechowywać wpisy formularza w WordPressie; Samouczek dotyczący zapisywania danych formularza WordPress w bazie danych; Zapisz dane WPForms w bazie danych; Rozwiązanie do przechowywania danych formularza WordPress;

Objaśnienie

Oto prosty sposób na zapisanie danych formularza w bazie danych WordPressa za pomocą niestandardowego rozwiązania. Ten kod obsługuje przesyłanie formularzy i przechowuje dane w sposób bezpieczny.

  • Hook do przesyłania formularza: Kod nasłuchuje przesyłania formularzy za pomocą akcji AJAX WordPressa. Oznacza to, że może obsługiwać dane formularza bez odświeżania strony.
  • Sprawdzenie bezpieczeństwa: Używa nonce (unikalnego tokena), aby zapewnić, że przesyłanie formularza jest bezpieczne i autentyczne. Pomaga to zapobiegać nieautoryzowanym przesyłaniom.
  • Sanityzacja danych: Przed zapisaniem dane formularza są oczyszczane, aby usunąć wszelkie niepożądane znaki. Obejmuje to sanityzację pól tekstowych, adresów e-mail i obszarów tekstowych.
  • Walidacja adresu e-mail: Kod sprawdza, czy podany adres e-mail jest prawidłowy. Jeśli nie, wysyła komunikat o błędzie do użytkownika.
  • Wstawianie do bazy danych: Oczyszczone dane są następnie wstawiane do niestandardowej tabeli bazy danych o nazwie form_submissions. W przypadku sukcesu zwracana jest wiadomość o powodzeniu; w przeciwnym razie wysyłana jest wiadomość o błędzie.
  • Tworzenie tabeli: Gdy wtyczka lub motyw jest aktywowany, w bazie danych tworzona jest nowa tabela do przechowywania przesyłanych formularzy. Zapewnia to dedykowaną przestrzeń dla Twoich danych.
  • Załadowanie skryptu: Niezbędny plik JavaScript jest ładowany, aby obsłużyć przesyłanie formularza za pomocą AJAX. Przekazuje również adres URL AJAX i nonce do skryptu w celu zapewnienia bezpiecznej komunikacji.

To rozwiązanie pozwala na efektywne przechowywanie danych formularza w bazie danych WordPressa, oferując niestandardowe rozwiązanie bez polegania na zewnętrznych wtyczkach.

Kod

<?php
// Hook into the form submission action
add_action('wp_ajax_wp_dudecom_save_form_data', 'wp_dudecom_save_form_data');
add_action('wp_ajax_nopriv_wp_dudecom_save_form_data', 'wp_dudecom_save_form_data');

// Function to handle form data saving
function wp_dudecom_save_form_data() {
    // Check for nonce security
    check_ajax_referer('wp_dudecom_form_nonce', 'security');

    // Sanitize and validate form data
    $name = sanitize_text_field($_POST['name']);
    $email = sanitize_email($_POST['email']);
    $message = sanitize_textarea_field($_POST['message']);

    // Validate email
    if (!is_email($email)) {
        wp_send_json_error('Invalid email address');
    }

    global $wpdb;
    $table_name = $wpdb->prefix . 'form_submissions';

    // Prepare data for insertion
    $data = array(
        'name' => $name,
        'email' => $email,
        'message' => $message,
        'submitted_at' => current_time('mysql')
    );

    // Insert data into the database
    $inserted = $wpdb->insert($table_name, $data);

    if ($inserted) {
        wp_send_json_success('Form data saved successfully');
    } else {
        wp_send_json_error('Failed to save form data');
    }

    wp_die();
}

// Create the database table on plugin/theme activation
function wp_dudecom_create_form_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'form_submissions';

    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        name tinytext NOT NULL,
        email text NOT NULL,
        message text NOT NULL,
        submitted_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}
register_activation_hook(__FILE__, 'wp_dudecom_create_form_table');

// Enqueue necessary scripts
function wp_dudecom_enqueue_scripts() {
    wp_enqueue_script('wp-dudecom-form-handler', get_template_directory_uri() . '/js/form-handler.js', array('jquery'), null, true);
    wp_localize_script('wp-dudecom-form-handler', 'wp_dudecom_ajax', array(
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wp_dudecom_form_nonce')
    ));
}
add_action('wp_enqueue_scripts', 'wp_dudecom_enqueue_scripts');
?>

Instrukcja

Aby zaimplementować kod do zapisywania danych formularza w bazie danych, wykonaj następujące kroki:

Lokalizacja pliku: Dodaj kod do pliku functions.php swojego motywu lub stwórz plik własnej wtyczki.

Wymagania wstępne:

  • Upewnij się, że masz dostęp do systemu plików swojej witryny WordPress.
  • Podstawowa znajomość struktury plików WordPress i PHP.

Kroki implementacji:

  1. Otwórz plik functions.php swojego motywu: Przejdź do wp-content/themes/twoj-motyw/functions.php za pomocą menedżera plików lub klienta FTP.
  2. Skopiuj i wklej podany kod: Wstaw cały fragment kodu do pliku functions.php lub do pliku własnej wtyczki.
  3. Utwórz plik JavaScript: W katalogu swojego motywu utwórz folder js, jeśli jeszcze nie istnieje. Wewnątrz niego utwórz plik o nazwie form-handler.js.
  4. Dodaj logikę przesyłania formularza AJAX: W pliku form-handler.js dodaj JavaScript do obsługi przesyłania formularzy za pomocą AJAX. Upewnij się, że wysyła dane do akcji wp_dudecom_save_form_data.
  5. Aktywuj wtyczkę (jeśli dotyczy): Jeśli dodałeś kod do własnej wtyczki, aktywuj ją z panelu administracyjnego WordPress w sekcji Wtyczki.
  6. Przetestuj formularz: Utwórz formularz na swojej stronie, który zawiera pola dla name, email i message. Upewnij się, że formularz przesyła dane za pomocą AJAX do określonej akcji.
  7. Zweryfikuj wpisy w bazie danych: Sprawdź swoją bazę danych WordPress, aby upewnić się, że tabela form_submissions została utworzona i dane są poprawnie wstawiane.

Ta konfiguracja pozwala na efektywne przechowywanie danych formularza w bazie danych WordPress, oferując własne rozwiązanie bez polegania na wtyczkach innych firm.

Jeśli potrzebujesz pomocy przy implementacji lub bardziej zaawansowanej funkcjonalności, rozważ skorzystanie z usług wp-dude.com.