Jak bezpiecznie zapisać dane formularza w bazie danych WordPressa
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:
- Otwórz plik
functions.php
swojego motywu: Przejdź dowp-content/themes/twoj-motyw/functions.php
za pomocą menedżera plików lub klienta FTP. - Skopiuj i wklej podany kod: Wstaw cały fragment kodu do pliku
functions.php
lub do pliku własnej wtyczki. - Utwórz plik JavaScript: W katalogu swojego motywu utwórz folder
js
, jeśli jeszcze nie istnieje. Wewnątrz niego utwórz plik o nazwieform-handler.js
. - 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 akcjiwp_dudecom_save_form_data
. - Aktywuj wtyczkę (jeśli dotyczy): Jeśli dodałeś kod do własnej wtyczki, aktywuj ją z panelu administracyjnego WordPress w sekcji Wtyczki.
- Przetestuj formularz: Utwórz formularz na swojej stronie, który zawiera pola dla
name
,email
imessage
. Upewnij się, że formularz przesyła dane za pomocą AJAX do określonej akcji. - 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.