Formulaire mail PHP : confirmation d'envoi

Résolu
la chicane Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -  
la chicane Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour la compagnie !!!

Comme je vous le disais dans l'autre post, j'ai réussi à faire migrer mon site du serveur Windows, vers le serveur Linux.
Me voilà donc prête à utiliser un formulaire en PHP.

Le formulaire est créé, le code PHP est prêt et tout fonctionne (si si, je vous assure !!!)
Le formulaire a même la tête que je voulais qu'il ait... ;-)

En revanche, à l'envoi du formulaire, plutôt qu'une vague phrase "votre message a bien été envoyé" dans une fenêtre blanche et vide comme actuellement, j'aimerais que mon visiteur arrive sur une petite page de "remerciements" que j'ai préparé.

Pourriez vous me dire comment coder pour avoir ce résultat ??

Voici mon code PHP :

<?php
	
	// destinataire du mail
	$destinataire = 'mon.adresse@monfai.com';

	// copie à l'émetteur
	$copie = 'oui'; // 'oui' ou 'non'

	// Messages de confirmation du mail
	$message_envoye = 'votre message a bien été envoyé';
	$message_non_envoye = "L'envoi du mail a échoué pour une raison inconnue, veuillez réessayer.";
	$message_erreur_formulaire = "Attention, pour continuer, vous devez <a href=\"contact.html\">envoyer le formulaire</a>.";
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";


	// test d'envoi du formulaire
	if (!isset($_POST['envoi']))
	{
		// si echec
		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
	}
	else
	{
		/*
		 * nettoyer et enregistrer le message
		 */
		function Rec($text)
		{
			$text = trim($text); // supprime les espaces blancs en début et en fin de texte
			if (1 === get_magic_quotes_gpc())
			{
				$stripslashes = create_function('$txt', 'return stripslashes($txt);');
			}
			else
			{
				$stripslashes = create_function('$txt', 'return $txt;');
			}

			// magic quotes ?
			$text = $stripslashes($text);
			$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
			$text = nl2br($text);
			return $text;
		};

		/*
		 * vérif email
		 */
		function IsEmail($email)
		{
			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
			return (eregi($pattern,$email)) ? true : false;
		};

		// formulaire envoyé, on récupère tous les champs.
		$nom			= (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
		$prenom     = (isset($_POST['prenom']))     ? Rec($_POST['prenom'])     : '';
		$telephone  = (isset($_POST['telephone']))     ? Rec($_POST['telephone'])     : '';
		$email   	= (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
		$message 	= (isset($_POST['message'])) ? Rec($_POST['message']) : '';

		// vérification des variables et de l'email ...
		$email = (IsEmail($email)) ? $email : ''; 

		if (($nom != '') && ($prenom != '') && ($telephone != '') && ($email != '') && ($message != ''))
		{
			// envoie du mail après consitution
			$headers = 'From: '.$nom.' '.$prenom.' <'.$email.'>' . "\r\n";

			// copie à l'expéditeur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire.','.$email;
			}
			else
			{
				$cible = $destinataire;
			};

			// Remplacement de certains caractères spéciaux
			$message = str_replace("&#039;","'",$message);
			$message = str_replace("&#8217;","'",$message);
			$message = str_replace("&quot;",'"',$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$message);
			$message = str_replace("<","<",$message);
			$message = str_replace(">",">",$message);
			$message = str_replace("&amp;","&",$message);

		/* ancien code qui fonctionnait
			$message = $message. "\n".'tel '.$telephone;
		*/

			$message = 'Nom : '.$nom."\n".'Prénom : '.$prenom."\n".'Téléphone : '.$telephone."\n"."\n".'Message : '.$message;

			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>'."\n";
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>'."\n";
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p>'.$message_formulaire_invalide.' <a href="#" OnClick="history.back()">Retour au formulaire</a></p>'."\n";
		};
	}; // fin du if (!isset($_POST['envoi']))
?>


Mon code html :

<form id="contact" method="post" action="traitement_formulaire.php">
			<p class="Style19">Si vous souhaitez être recontacté, n'oubliez pas de me transmettre votre adresse mail.</p>
				<table width="500" cellpadding="5" cellspacing="5">
				<tr>
				<td><span class="Style18 Style19">Nom</span></td>
				<td><input type="text" id="nom" name="nom" tabindex="1" style="background-color:#CCCCCC"/></td>
				</tr>
				<tr>
				<td><span class="Style18 Style19">Prénom</span></td>
				<td><input type="text" id="prenom" name="prenom" tabindex="2" style="background-color:#CCCCCC"/></td>
				</tr>
				<tr>
				<td><span class="Style18 Style19">N° de Téléphone</span></td>
				<td><input type="text" id="telephone" name="telephone" tabindex="3" style="background-color:#CCCCCC"/></td>
				</tr>
				<tr>
				<td><span class="Style18 Style19">Adresse mail</span></td>
				<td><input type="text" id="email" name="email" tabindex="4" style="background-color:#CCCCCC"/></td>
				</tr>
				<tr>
				<td><span class="Style18 Style19">Message</span></td>
				<td><textarea id="message" name="message" tabindex="5" cols="40" rows="20" 
					  style="background-color:#CCCCCC"></textarea></td>
				</tr>
				<tr>
				<td><span class="Style19"></span></td>
				<td><input type="submit" name="envoi" value="Envoyer" /></td></tr>
				</table>
				</form>


Ce que j'aimerais, c'est remplacer cette variable :
$message_envoye = 'votre message a bien été envoyé';

par une redirection vers la page "ar_contact.htm", qui se trouve dans le même répertoire, et qui s'afficherait dans la même fenêtre navigateur.

SI quelqu'un a la solution... merci beaucoup !!
A voir également:

7 réponses

Ricky38 Messages postés 4349 Date d'inscription   Statut Contributeur Dernière intervention   1 462
 
salut,

remplace ta ligne :

echo '<p>'.$message_envoye.'</p>'."\n";


par :

header('Location: ar_contact.htm');
9
chupa23 Messages postés 149 Date d'inscription   Statut Membre Dernière intervention   28
 
	if (mail($cible, $objet, $message, $headers))
			{
header('Location: mapage.php');
			}


Sans avoir tester , je pense que celle devrait marcher , après tu as plusieurs possibilité pour une redirection .Ou tu peux simplement modifier ton message d'origine pour faire quelque chose de mieux(avec un css derriere par ex).
1
la chicane Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   37
 
Merci Chupa et Ricky...
je viens d'essayer vos solutions... et cela donne ceci :

"Error 404 - Not found
Le fichier requis n'a pas été trouvé. Il peut s'agir d'une erreur technique. Veuillez réessayer ultérieurement. Si vous ne pouvez pas accéder au fichier après plusieurs tentatives, cela signifie qu'il a été supprimé.
"

et bien sur, le message n'est pas envoyé...
0
chupa23 Messages postés 149 Date d'inscription   Statut Membre Dernière intervention   28
 
Erreur 404 - Fichier introuvable , c'est a dire qu'il est orienté vers une page qui n'existe pas , tu as mis quoi exactement ici : 'Location: mapage.php' -> mapage.php est a remplacé par ta page vers ou tu souhaite être redirigé.

Et si le message n'est pas envoyé , il doit y a voir une erreur avant la redirection (l'envoie étant avant la redirection).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
la chicane Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   37
 
Youpeeee !!!!!!!!
finalement, c'est bon... j'ai recopié le code et ai relu scrupuleusement... j'avais du louper qqchose la première fois !!!
Pour l'instant, je ne recois pas le message... j'attends un peu...
Je donnerai des nouvelles...

En attendant, merci infiniment à vous deux !!!
0
la chicane Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   37
 
je confirme... ça marche impec !!!

merci encore !

si j'abusais... le code pour envoyer les messages à quelqu'un en copie ??

en haut de ma page PHP j'ai

$destinataire = 'mon.adresse@monfai.com';


j'ai essayé comme ça :

$destinataire = 'mon.adresse@monfai.com,autre.adresse@sonfai.com';


mais cela me génère une erreur...
0
la chicane Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   37
 
bon, j'y suis arrivée... pourtant le code est exactement le même...
mais ça fonctionne...

Je clos ce post... je vous remercie tous pour votre aide !!!

à la prochaine...
0