Problème formulaire suite à mise en place de captcha.

Eléphant du PHP | 89 Messages

26 mars 2022, 23:29

Bonsoir,

je deviens dingue ...

J'ai placé le au niveau du traitement des données:
// 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);
header("Location:http://www.paysdessaveurs.be/merci.html");
La redirection vers la page "Merci" fonctionne, mais le mail reçu est le suivant:

Nom:\t$_POST[nom]\nE-Mail de contact:\t$_POST[email]\nCommentaires:\t$_POST[message]\n

Le fichier .php est désormais:
<?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']))	{
        echo "Méthode non autorisée";
											}else					
					{
		
		// On prépare l'URL
        $url = "https://www.google.com/recaptcha/api/siteverify?secret=6LdoPuAeAAAAAFHlp2UVA1tGDK06FTT8l11nfWJy&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))	{
            echo "Méthode non autorisée";
													}
		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);
header("Location:http://www.paysdessaveurs.be/merci.html");

					}
								}else	{echo "Méthode non autorisée";
					exit;
										}		
						}	
					}

											}else	{
    http_response_code(405);
    echo "Méthode non autorisée";
													}
Merci pour votre aide.

Eléphant du PHP | 89 Messages

28 mars 2022, 21:05

Bonsoir;
je viens de modifier header("Location:http://www.paysdessaveurs.be/merci.html"); en header('Location:http://www.paysdessaveurs.be/merci.html').
Double quotes en simple quote.
Bonne nouvelle: cela fonctionne.
Mauvaise nouvelle: je reçois toujours des spams (au lieu de 10 par jour, 3 ou 4) ...
Grrh, y a-t-il encore quelque chose qui n'est pas correct dans mon formulaire?

Merci.