Tres petit soucis avec la fonction envois de php

Résolu
flexi2202 -  
 flexi2202 -
bonsoir a tous
j ai trouve un code en php qui permet de faire remplir un formulaire et que ce dernier sois envoye a mon adresse amil
tout fonctionne a merveille
mais je souhaiterais qu une fois le formulaire envoyé , le personne qui a envoyé le formulaire voit apparaitre une nouvelle page avec un message comme quoi son message a bien ete envoye

voici le code php
merci de l aide
<?php 
define('MAIL_DESTINATAIRE','talonil.com'); // remplacer par votre email
define('MAIL_SUJET','Demande de renseignement(s)');

if(!empty($_POST)){
extract($_POST);
	$valid = true;
 if (empty($_POST['nom'])){
		$valid=false;
		$erreurnom="Vous n'avez pas rempli votre Nom";
	}
 if (empty($_POST['prenom'])){
		$valid=false;
		$erreurprenom="Vous n'avez pas rempli votre Prénom";
	}
 if (empty($_POST['email'])){
		$valid=false;
		$erreuremail="Vous n'avez pas rempli votre Email";
	}
	if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){
		$valid=false;
		$erreuremail="Votre Email n'est pas valide";
	}
 if(empty($email)){
		$valid=false;
		$erreuremail="Vous n'avez pas renseigné votre Email";
	}
	
 if (empty($_POST['objet'])){
		$valid=false;
		$erreurobjet="Vous n'avez pas rempli l'objet de votre message";
	}
 if (empty($_POST['message'])){
		$valid=false;
		$erreurmessage="Vous n'avez renseigné votre Message";
	}

if($valid){
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
             ."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="utf-8"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer  Smiley langue HP/' . phpversion()."\r\n";

// préparation du corps du mail
$mail_corps = "Nom : $nom\n";
$mail_corps .= "Prénom : $prenom\n";
$mail_corps .= "Téléphone : $telephone\n";
$mail_corps .= "Email : $email\n";
$mail_corps .= "Objet de votre message : $objet\n";
$mail_corps .= "Message : $message\n";


// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {

  //Le mail est bien expédié
  $erreur = "Votre message nous a bien été transmis";
  		unset($nom);
		unset($prenom);
		unset($objet);
		unset($telephone);
		unset($email);
		unset($message);
		}
		else{
			$erreur = "Une erreur est survenue, votre message n'est pas parti";
		}
	}	
}

?>

2 réponses

  1. andreaulo
     
    Bonsoir,

    // je n'ai pas reprit le reste du code par soucis de clarté, il doit bien sur être présent
    // envoi du mail
    if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {

    //Le mail est bien expédié
    $erreur = "Votre message nous a bien été transmis";
    unset($nom);
    unset($prenom);
    unset($objet);
    unset($telephone);
    unset($email);
    unset($message);
    }
    else{
    $erreur = "Une erreur est survenue, votre message n'est pas parti";
    }

    // affiche le contenu de la variable $erreur avec la fonction echo
    echo $erreur;

    }
    }

    Néanmoins si vous sépare le traitement de la forme(HTML) ce qui est correct vous pouvez rediriger vers une page prévue pour ça en utilisant la fontion php header()

    http://php.net/manual/fr/function.header.php

    Et en transférant en GET la variable en question

    http://php.net/manual/fr/reserved.variables.get.php

    Comme ceci:

    // envoi du mail
    if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {

    //Le mail est bien expédié
    $erreur = "Votre message nous a bien été transmis";
    unset($nom);
    unset($prenom);
    unset($objet);
    unset($telephone);
    unset($email);
    unset($message);
    }
    else{
    $erreur = "Une erreur est survenue, votre message n'est pas parti";
    }

    // envoit vers une page qui indique le résultat de l'envoi du formulaire
    header('Location: resultatenvoi.php?message='.$erreur);
    exit();// facultatif mais ça coûte rien d'arrêter le programme/la page
    }
    }

    Et bien sûr de créer cette page resultatenvoi.php
    <html>
    <head><title>CONFIRMATION DE L'ENVOI DU FORMULAIRE</title></head>
    <body>
    <!-- un peu de css pour la forme -->
    <p style='color:red;font-size:2.2em;font-weight:bold;'>

    <!-- début du php -->
    <?php
    /* controle si la valeur de la variable $erreur est bien envoyé(otenu dans une variable nommée $_GET['message'] comme indiqué dans la redirection par la fonction header()
    */

    if(isset($_GET['message'])){
    echo $_GET['message'];
    }
    exit();
    ?>
    </p>
    </body>
    </html>
    0
  2. flexi2202
     
    bonjour
    c est gentil , merci pour la réponse , tout fonctionne
    0