j'essaye de mettre en place un captcha pour protéger un formulaire de spams.
Le captcha fonctionne, mais la dernière partie qui consiste à renvoyer sur la page "Merci pour nous avoir contacté" ne fonctionne pas. Cela ramène vers une page blanche, mais je reçois bien les réponses du formulaire par mail.
Voici mon formulaire:
Code : Tout sélectionner
<form action="traitement2003.php" method="post">
<p>
<label for="nom">Nom :</label>
<input type="text" name="nom" id="nom">
</p>
<p>
<label for="sujet">Sujet :</label>
<input type="text" name="sujet" id="sujet">
</p>
<p>
<label for="email">E-mail :</label>
<input type="email" name="email" id="email">
</p>
<p>
<label for="message">Message :</label>
<textarea name="message" id="message"></textarea>
</p>
<input type="hidden" id="recaptchaResponse" name="recaptcha-response">
<button>Envoyer</button>
<script src="https://www.google.com/recaptcha/api.js?render=6LdoPuAeAAAAAD3VdvggAG3AgjBgAuy8xjfDVSxt"></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('6LdoPuAeAAAAAD3VdvggAG3AgjBgAuy8xjfDVSxt', {action: 'homepage'}).then(function(token) {
document.getElementById('recaptchaResponse').value = token
});
});
</script>
</form>Code : Tout sélectionner
<?php
// On vérifie que la méthode POST est utilisée
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// On vérifie si le champ "recaptcha-response" contient une valeur
if(empty($_POST['recaptcha-response'])){
header('Location: index.html');
}else{
// On prépare l'URL
$url = "https://www.google.com/recaptcha/api/siteverify?secret=6xxxxxxxxxx&response={$_POST['recaptcha-response']}";
// On vérifie si curl est installé
if(function_exists('curl_version')){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($curl);
}else{
// On utilisera file_get_contents
$response = file_get_contents($url);
}
// On vérifie qu'on a une réponse
if(empty($response) || is_null($response)){
header('Location: index.php');
}
else{
$data = json_decode($response);
if($data->success){
if(
isset($_POST['nom']) && !empty($_POST['nom']) &&
isset($_POST['sujet']) && !empty($_POST['sujet']) &&
isset($_POST['email']) && !empty($_POST['email']) &&
isset($_POST['message']) && !empty($_POST['message'])
){
// On nettoie le contenu
$nom = strip_tags($_POST['nom']);
$sujet = strip_tags($_POST['sujet']);
$email = strip_tags($_POST['email']);
$message = htmlspecialchars($_POST['message']);
// Ici vous traitez vos données
$msg = "Nom:\t$_POST[nom]\n";
$msg .= "E-Mail de contact:\t$_POST[email]\n";
$msg .= "Commentaires:\t$_POST[message]\n";
$recipient = "[email protected]";
$subject = "Formulaire de reservation au pays des Saveurs";
$mailheaders = "From: $_POST[email]\n";
$mailheaders .= "Reply-To: $_POST[email]\n\n";
mail($recipient, $subject, $msg, $mailheaders);
}
}else{
header("Location:http://www.paysdessaveurs.be/merci.html");
}}}
}else{
http_response_code(405);
echo "Méthode non autorisée";
}
?>