Exemple de code pour un formulaire de contact html5 / php qui fonctionne avec les adresse gmail et avec un destinataire supplémentire en copie cachée
index.html :
<!DOCTYPE html>
<html>
<head>
<title>Formulaire de contact</title>
</head>
<body>
<h2>Contactez-nous</h2>
<form action="process.php" method="post">
<label for="name">Nom :</label>
<input type="text" name="name" required><br><br>
<label for="email">E-mail :</label>
<input type="email" name="email" required><br><br>
<label for="message">Message :</label>
<textarea name="message" rows="5" required></textarea><br><br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>
process.php :
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$to = "votreadresse@gmail.com";
$bcc = "destinataire-cache@example.com";
$subject = "Nouveau message de contact";
$headers = "From: $name <$email>\r\n";
$headers .= "Reply-To: $email\r\n";
$headers .= "Bcc: $bcc\r\n";
if (mail($to, $subject, $message, $headers)) {
echo "Votre message a été envoyé avec succès.";
} else {
echo "Une erreur s'est produite lors de l'envoi du message.";
}
}
?>
Dans cet exemple, le formulaire est soumis à la page process.php qui récupère les données saisies par l’utilisateur. Le code PHP utilise la fonction mail() pour envoyer l’e-mail. Assurez-vous que votre serveur est correctement configuré pour envoyer des e-mails.
N’oubliez pas de remplacer "votreadresse@gmail.com" par votre propre adresse e-mail et "destinataire-cache@example.com" par l’adresse e-mail du destinataire en copie cachée que vous souhaitez ajouter.
Notez que la fonction mail() peut ne pas fonctionner correctement dans tous les environnements de serveur. Vous pouvez envisager d’utiliser une bibliothèque ou une classe de messagerie plus avancée comme PHPMailer ou SwiftMailer pour une gestion plus robuste des e-mails.
Assurez-vous également de mettre en place des mesures de sécurité appropriées, comme la validation des entrées utilisateur et la protection contre les attaques de type injection.
Comment faire ce formulaire de contact avec PHPMailer ? et insérer le recaptcha de google ?
Voici un exemple de formulaire de contact utilisant PHPMailer avec l’ajout du reCAPTCHA de Google :
index.html :
<!DOCTYPE html>
<html>
<head>
<title>Formulaire de contact</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<h2>Contactez-nous</h2>
<form action="process.php" method="post">
<label for="name">Nom :</label>
<input type="text" name="name" required><br><br>
<label for="email">E-mail :</label>
<input type="email" name="email" required><br><br>
<label for="message">Message :</label>
<textarea name="message" rows="5" required></textarea><br><br>
<div class="g-recaptcha" data-sitekey="YOUR_RECAPTCHA_SITE_KEY"></div><br><br>
<input type="submit" value="Envoyer">
</form>
</body>
</html>
process.php :
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Vérification du reCAPTCHA
$recaptcha_secret = "YOUR_RECAPTCHA_SECRET_KEY";
$recaptcha_response = $_POST['g-recaptcha-response'];
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array(
'secret' => $recaptcha_secret,
'response' => $recaptcha_response
);
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$recaptcha_result = file_get_contents($url, false, $context);
$recaptcha_data = json_decode($recaptcha_result);
if (!$recaptcha_data->success) {
echo "Erreur reCAPTCHA. Veuillez réessayer.";
exit;
}
// Envoi de l'e-mail avec PHPMailer
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.example.com'; // Configurez le serveur SMTP
$mail->SMTPAuth = true;
$mail->Username = 'your_username@example.com'; // Configurez l'adresse e-mail d'envoi
$mail->Password = 'your_password'; // Configurez le mot de passe de l'adresse e-mail d'envoi
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->setFrom($email, $name);
$mail->addAddress('votreadresse@gmail.com'); // Configurez l'adresse e-mail de destination
$mail->addBCC('destinataire-cache@example.com'); // Configurez l'adresse e-mail en copie cachée
$mail->isHTML(true);
$mail->Subject = 'Nouveau message de contact';
$mail->Body = $message;
$mail->send();
echo "Votre message a été envoyé avec succès.";
} catch (Exception $e) {
echo "Une erreur s'est produite lors de l'envoi du message. Erreur : " . $mail->ErrorInfo;
}
}
?>
Dans cet exemple, nous utilisons la bibliothèque PHPMailer pour envoyer l’e-mail. Assurez-vous de télécharger la bibliothèque PHPMailer et de l’inclure dans votre projet.
Remplacez "YOUR_RECAPTCHA_SITE_KEY" par votre clé de site reCAPTCHA et "YOUR_RECAPTCHA_SECRET_KEY" par votre clé secrète reCAPTCHA dans le fichier process.php. Assurez-vous également de configurer les informations du serveur SMTP et les adresses e-mail appropriées dans le code PHP.
Notez que vous devez également installer les dépendances de PHPMailer en utilisant Composer pour que le code fonctionne correctement.
N’oubliez pas de mettre en place d’autres mesures de sécurité et de validation appropriées pour sécuriser votre formulaire et prévenir les attaques.
Comment utiliser Composer et phpMailer pour ce formulaire ?
Pour utiliser Composer et PHPMailer dans votre projet, suivez ces étapes :
Installez Composer : Rendez-vous sur https://getcomposer.org/ et suivez les instructions d’installation correspondant à votre système d’exploitation.
Créez un fichier composer.json à la racine de votre projet et ajoutez le contenu suivant :
{
"require": {
"phpmailer/phpmailer": "^6.5"
}
}
Ouvrez une fenêtre de terminal ou une invite de commandes et naviguez vers le répertoire de votre projet.
Exécutez la commande suivante pour installer les dépendances de Composer (y compris PHPMailer) :
composer install
Après l’exécution de cette commande, Composer téléchargera et installera PHPMailer dans un répertoire vendor à la racine de votre projet, ainsi que toutes ses dépendances.
Maintenant, vous pouvez inclure PHPMailer dans votre script PHP en ajoutant la ligne suivante :
require 'vendor/autoload.php';
Assurez-vous d’inclure cette ligne au début de votre fichier process.php.
Vous pouvez maintenant utiliser PHPMailer dans votre script pour envoyer des e-mails en suivant les exemples fournis précédemment.
L’utilisation de Composer avec PHPMailer facilite la gestion des dépendances et des mises à jour de la bibliothèque. Il gère automatiquement les dépendances et vous permet de garder votre code à jour plus facilement en utilisant des versions spécifiques de PHPMailer.
Assurez-vous de vérifier la documentation de PHPMailer pour obtenir plus d’informations sur les fonctionnalités et les options de configuration disponibles : https://github.com/PHPMailer/PHPMailer