Tres petit soucis avec la fonction envois de php [Résolu/Fermé]

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

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>
bonjour
c est gentil , merci pour la réponse , tout fonctionne