Formulaire de contact PHP avec stockage de base de données MariaDB

Dans cet article de blog, je vais vous montrer comment créer un formulaire de contact PHP qui envoie les données saisies par e-mail et les enregistre dans une base de données MariaDB. Nous vous guiderons tout au long du processus étape par étape et inclurons des exemples pour vous aider à le mettre en œuvre.

Étape 1 : Créer un formulaire HTML

Tout d’abord, vous créez un formulaire HTML simple qui collecte les entrées de l’utilisateur :

<!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>

Étape 2 : Créer un script PHP

Créez un nouveau fichier appelé formulaire de contact.php. Dans ce fichier, vous écrivez le code PHP qui traite les données du formulaire et les insère dans la base de données MariaDB.

Tout d’abord, vous établissez une connexion à la base de données :

<?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);
}

Remplacer votre_nom_d'utilisateur, votre_mot_de_passe et votre_base_de_données en utilisant vos propres informations d'identification de base de données.

Ensuite, vous traitez les données du formulaire et les insérez dans la base de données :

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();

Remplacer formulaire de contact par le nom de votre table de base de données qui doit stocker les données du formulaire de contact. Assurez-vous que le tableau comporte des colonnes pour nom, e-mail et message a.

Étape 3 : Envoyer un e-mail

Pour envoyer les données saisies par e-mail, ajoutez le code suivant au script PHP avant d'insérer les données dans la base de données :

$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.";
}

Remplacer votre_email@exemple.com via votre propre adresse e-mail à laquelle les messages doivent être envoyés.

Étape 4 : ajouter Google reCAPTCHA v2

Pour ajouter Google reCAPTCHA v2 à votre formulaire de contact, vous devez d'abord enregistrer votre site Web avec Google reCAPTCHA pour obtenir une clé de site et une clé secrète[2]. Insérez ensuite le code reCAPTCHA dans votre formulaire 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>

Remplacer votre_clé_de_site via votre propre clé de site.

Étape 5 : validation reCAPTCHA dans le script PHP

Ajoutez le code suivant à votre formulaire de contact.phpscript pour valider la réponse reCAPTCHA avant d'insérer les données dans la base de données et d'envoyer l'e-mail :

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;
}
}

Remplacer votre_clé_secrète grâce à votre propre clé secrète.

Étape 6 : Ajouter un champ de pot de miel

Un champ honeypot est un champ invisible qui est rempli par des robots mais ignoré par les vrais utilisateurs. Insérez le champ honeypot suivant dans votre formulaire HTML :

<input type="text" name="honeypot" id="honeypot" style="display:none;">

Ajoutez ensuite le code suivant à votre formulaire de contact.phpscript pour vérifier si le champ honeypot a été rempli :

if (!empty($_POST["honeypot"])) {
// Honeypot-Feld wurde ausgefüllt, wahrscheinlich ein Bot
exit;
}

Complet!

Vous disposez désormais d'un formulaire de contact PHP fonctionnel qui envoie les données saisies par e-mail, les stocke dans une base de données MariaDB et utilise à la fois Google reCAPTCHA v2 et un champ honeypot pour la défense contre le spam et les robots. Vous pouvez personnaliser le formulaire et le script PHP selon vos besoins pour ajouter des champs ou des fonctions supplémentaires.