Formulario de contacto PHP con almacenamiento de base de datos MariaDB
En esta publicación de blog le mostraré cómo crear un formulario de contacto PHP que envía los datos ingresados por correo electrónico y los almacena en una base de datos MariaDB. Lo guiaremos a través del proceso paso a paso y agregaremos ejemplos para ayudarlo a implementarlo.
Paso 1: Crear formulario HTML
Primero, crea un formulario HTML simple que recopile la información del usuario:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Kontaktformular</title> </head> <body> <h1>Kontaktformular</h1> <form action="kontaktformular.php" method="post"> <label for="name">Name:</label> <input type="text" name="name" id="name" required><br> <label for="email">E-Mail:</label> <input type="email" name="email" id="email" required><br> <label for="message">Nachricht:</label> <textarea name="message" id="message" required></textarea><br> <input type="submit" value="Senden"> </form> </body> </html>
Paso 2: Crear un script PHP
Crea un nuevo archivo llamado formulario de contacto.php
. En este archivo se escribe el código PHP que procesa los datos del formulario y los inserta en la base de datos MariaDB.
Primero, establece una conexión a la base de datos:
<?php $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_database"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Verbindung fehlgeschlagen: " . $conn->connect_error); }
Reemplazar tu_nombre_de_usuario
, tu_contraseña
y tu_base_de_datos
con sus propias credenciales de base de datos.
A continuación, procesa los datos del formulario y los inserta en la base de datos:
if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $email = $_POST["email"]; $message = $_POST["message"]; $sql = "INSERT INTO contact_form (name, email, message) VALUES (?, ?, ?)"; $stmt = $conn->prepare($sql); $stmt->bind_param("sss", $name, $email, $message); if ($stmt->execute()) { echo "Nachricht erfolgreich gesendet und in der Datenbank gespeichert."; } else { echo "Fehler: " . $sql . "<br>" . $conn->error; } $stmt->close(); } $conn->close();
Reemplazar formulario de contacto
por el nombre de la tabla de su base de datos que almacenará los datos del formulario de contacto. Asegúrese de que la tabla tenga columnas para nombre
, correo electrónico
y mensaje
tiene.
Paso 3: Enviar correo electrónico
Para enviar los datos ingresados por correo electrónico, agregue el siguiente código al script PHP antes de insertar los datos en la base de datos:
$to = "your_email@example.com"; $subject = "Neue Nachricht vom Kontaktformular"; $headers = "From: " . $email . "\r\n" . "Reply-To: " . $email . "\r\n" . "X-Mailer: PHP/" . phpversion(); if (mail($to, $subject, $message, $headers)) { echo "E-Mail erfolgreich gesendet."; } else { echo "E-Mail konnte nicht gesendet werden."; }
Reemplazar tu_correo_electronico@ejemplo.com
con su propia dirección de correo electrónico a la que se deben enviar los mensajes.
Paso 4: Agrega Google reCAPTCHA v2
Para agregar Google reCAPTCHA v2 a su formulario de contacto, primero debe registrar su sitio web con Google reCAPTCHA para obtener una clave de sitio y una clave secreta[2]. Luego pegue el código reCAPTCHA en su formulario HTML:
<head> <!-- Weitere Head-Elemente --> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <!-- Kontaktformular --> <div class="g-recaptcha" data-sitekey="your_site_key"></div> </body>
Reemplazar clave_de_tu_sitio
con su propia clave de sitio.
Paso 5: validación de reCAPTCHA en el script PHP
Pegue el siguiente código en su formulario de contacto.php
script para validar la respuesta reCAPTCHA antes de insertar los datos en la base de datos y enviar el correo electrónico:
if (isset($_POST['g-recaptcha-response'])) { $captcha = $_POST['g-recaptcha-response']; $secretKey = "your_secret_key"; $url = "https://www.google.com/recaptcha/api/siteverify?secret=" . urlencode($secretKey) . "&response=" . urlencode($captcha); $response = file_get_contents($url); $responseKeys = json_decode($response, true); if (!$responseKeys["success"]) { echo "reCAPTCHA-Validierung fehlgeschlagen."; exit; } }
Reemplazar tu_clave_secreta
con tu propia clave secreta.
Paso 6: Agregar campo honeypot
Un campo honeypot es un campo invisible que es completado por bots pero ignorado por los usuarios reales. Inserte el siguiente campo honeypot en su formulario HTML:
<input type="text" name="honeypot" id="honeypot" style="display:none;">
Luego pegue el siguiente código en su formulario de contacto.php
script para comprobar si el campo honeypot se ha rellenado:
if (!empty($_POST["honeypot"])) { // Honeypot-Feld wurde ausgefüllt, wahrscheinlich ein Bot exit; }
¡Completo!
Ahora tiene un formulario de contacto PHP funcional que envía por correo electrónico los datos ingresados, los almacena en una base de datos MariaDB y utiliza Google reCAPTCHA v2 y un campo honeypot para defensa contra spam y bots. Puede personalizar el formulario y el script PHP según sea necesario para agregar campos o funciones adicionales.